3个版本

0.0.3 2024年1月28日
0.0.2 2023年10月28日
0.0.1 2023年5月29日

#189 in 机器学习

MIT/ApacheGPL-2.0 许可协议

52KB
1.5K SLoC

wisard - Rust中WiSARD网络的库

License

摘要

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-APACHELICENSE-MIT。提交 pull request 被视为同意这些许可条款。

依赖项

~2–2.7MB
~59K SLoC