1个不稳定版本
0.1.0 | 2023年8月1日 |
---|
#517 in 机器学习
360KB
565 行
[WIP] Snail NN - 小型神经网络库
具有反向传播和并行化随机梯度下降实现的完全功能神经网络库。
示例
将图像存储在神经网络中,放大并插值它们之间。
cargo run --example imagepol --release
强制性的异或示例
cargo run --example xor --release
示例代码
use snail_nn::prelude::*;
fn main(){
let mut nn = Model::new(&[2, 3, 1]);
nn.set_activation(Activation::Sigmoid)
let mut batch = TrainingBatch::empty(2, 1);
let rate = 1.0;
// AND - training data
batch.add(&[0.0, 0.0], &[0.0]);
batch.add(&[1.0, 0.0], &[0.0]);
batch.add(&[0.0, 1.0], &[0.0]);
batch.add(&[1.0, 1.0], &[1.0]);
for _ in 0..10000 {
let (w_gradient, b_gradient) = nn.gradient(&batch.random_chunk(2));
nn.learn(w_gradient, b_gradient, rate);
}
println!("ouput {:?} expected: 0.0", nn.forward(&[0.0, 0.0]));
println!("ouput {:?} expected: 0.0", nn.forward(&[1.0, 0.0]));
println!("ouput {:?} expected: 0.0", nn.forward(&[0.0, 1.0]));
println!("ouput {:?} expected: 1.0", nn.forward(&[1.0, 1.0]));
}
特性
- sigmoid、tanh和relu激活函数
- 并行化随机梯度下降
- 在我的机器上运行(ツ)
- 会消耗大部分CPU
待办事项
- 更多示例
- 更好的文档
- 使用wgpu的计算着色器
依赖项
~1.5MB
~30K SLoC