3个版本
0.0.3 | 2024年1月28日 |
---|---|
0.0.2 | 2023年10月28日 |
0.0.1 | 2023年5月29日 |
#189 in 机器学习
52KB
1.5K SLoC
wisard
- Rust中WiSARD网络的库
摘要
WiSARD(Wilkie, Stonham, Aleksander Recognition Device)是一种无权重的神经网络,以其高速的模式识别能力和简单性而闻名。本项目是WiSARD网络的Rust实现,提供了一个轻量级、高效且用户友好的库,用于构建、训练和评估模型。
本实现旨在利用语言的性能、安全性和并发特性,使其非常适合研究和生产级应用。我们旨在提供一个灵活且可扩展的基础,用于开发各种领域(如图像识别和信号处理)的可部署模式识别系统。
请注意,这是一个正在进行中的项目,目前还不适合在生产环境中使用。
特性
- WiSARD网络的快速高效实现。
- 相关样本编码函数,用于数据预处理。
- 可自定义的构建时间和运行时参数,用于控制模型行为。
- 支持多种数据类型,包括二进制、分类和连续输入。
安装
要在您的Rust项目中使用WiSARD,请将以下行添加到您的Cargo.toml
文件中
[dependencies]
wisard = "0.0.1"
有关其他安装选项和指导,请参阅crate文档。
用法
以下是一个简单的示例,演示了如何使用wisard
crate创建和训练基本的WiSARD模型
use std::collections::HashSet;
use bitvec::prelude::*;
use wisard::model::BinaryWisard;
fn main() {
// The size of the input (in bits)
let input_size = 8;
// The size of the address (in bits)
let addr_size = 2;
// The set of labels used by the samples
let labels = HashSet::from_iter(vec!["cold", "hot"].into_iter());
// Create a new WiSARD model
let mut model = BinaryWisard::new(input_size, addr_size, labels);
// Provide some sample data
let samples = vec![
(bitvec![1, 1, 1, 0, 0, 0, 0, 0], "cold"),
(bitvec![1, 1, 1, 1, 0, 0, 0, 0], "cold"),
(bitvec![0, 0, 0, 0, 1, 1, 1, 1], "hot"),
(bitvec![0, 0, 0, 0, 0, 1, 1, 1], "hot"),
];
// Instantiate the samples
let samples = samples
.into_iter()
.map(|(v, l)| Sample::from_raw_parts(v, addr_size, l))
.collect::<Vec<_>>();
// Train the model using each provided sample
for sample in encoded_samples.iter() {
model.fit(sample);
}
// Display the model predictions
for sample in encoded_samples.iter() {
let input = sample.raw_bits();
let true = sample.label();
let pred = model.predict(sample);
println!("Input: {input:?}, True: {true:?}, Pred: {pred:?}");
}
}
有关更详细的示例和用法说明,请参阅文档。
贡献
欢迎对wisard
项目的贡献!如果您发现了一个错误或对改进有建议,请打开一个问题。对于新功能、错误修复和文档改进的拉取请求也表示感谢。
许可协议
wisard
同时根据 MIT 协议和 Apache 协议(版本 2.0)进行分发。详情请见 LICENSE-APACHE 和 LICENSE-MIT。提交 pull request 被视为同意这些许可条款。
依赖项
~2–2.7MB
~59K SLoC