10 个版本
最新 0.2.2 | 2024 年 8 月 22 日 |
---|---|
0.2.1 | 2024 年 8 月 22 日 |
0.1.5 | 2024 年 7 月 3 日 |
0.1.1 | 2024 年 6 月 30 日 |
0.0.4 | 2024 年 5 月 21 日 |
#80 在 机器学习
868 每月下载量
205KB
4K SLoC
Rust 中的模块化神经网络。
轻松创建 Rust 中的模块化神经网络!
快速入门
use neurons::{activation, network, objective, optimizer, tensor};
fn main() {
// New feedforward network with four inputs
let mut network = network::Network::new(tensor::Shape::Dense(4));
// Dense(output, activation, bias, Some(dropout))
network.dense(100, activation::Activation::ReLU, false, None);
// Convolution(filters, kernel, stride, padding, activation, Some(dropout))
network.convolution(5, (5, 5), (1, 1), (1, 1), activation::Activation::ReLU, Some(0.1));
// Dense(output, activation, bias, Some(dropout))
network.dense(10, activation::Activation::Softmax, false, None);
network.set_optimizer(
optimizer::Optimizer::AdamW(
optimizer::AdamW {
learning_rate: 0.001,
beta1: 0.9,
beta2: 0.999,
epsilon: 1e-8,
decay: 0.01,
// To be filled by the network:
momentum: vec![],
velocity: vec![],
}
)
);
network.set_objective(
objective::Objective::MSE, // Objective function
Some((-1f32, 1f32)) // Gradient clipping
);
println!("{}", network);
let (x, y) = { }; // Load data
let epochs = 1000;
let loss = network.learn(x, y, epochs); // Train the network
}
示例可以在 examples
目录中找到。
进度
-
层类型
- 密集层
- 卷积层
- 前向传播
- 填充
- 步长
- 膨胀
- 反向传播
- 填充
- 步长
- 膨胀
- 最大池化
- 前向传播
-
激活函数
- 线性
- Sigmoid
- Tanh
- ReLU
- LeakyReLU
- Softmax
-
目标函数
- 自编码器
- 均方误差
- 均方根误差
- 均方根误差
- 交叉熵
- 二元交叉熵
- KL 散度
-
优化技术
- 随机梯度下降法
- 随机梯度下降法(动量版)
- Adam
- AdamW
- RMSprop
- 小批量
-
架构
- 前馈(称为
Network
) - 卷积层
- 循环
- 反馈连接
- 密集到密集
- 密集到卷积
- 卷积到密集
- 卷积到卷积
- 前馈(称为
-
正则化
- Dropout
- 批量归一化
- 提前停止
-
并行化
- 多线程
-
测试
- 单元测试
- 彻底测试代数运算
- 彻底测试激活函数
- 彻底测试目标函数
- 彻底测试优化技术
- 彻底测试反馈缩放(与梯度相关)
- 集成测试
- 单元测试
-
示例
- XOR
- Iris
- 多层感知器
- 多层感知器 + 反馈
- 线性回归
- 多层感知器
- 多层感知器 + 反馈
- 分类待定。
- 多层感知器
- 多层感知器 + 反馈
- MNIST
- 多层感知器
- 多层感知器 + 反馈
- 卷积神经网络
- 卷积神经网络 + 反馈
- CIFAR-10
- 卷积神经网络
- 卷积神经网络 + 反馈
-
其他
- 文档
- 自定义随机权重初始化
- 自定义张量类型
- 绘图
- 从文件加载数据
- 通用数据加载功能
- 为文档自定义图标/图像
- 为文档自定义样式表
- 类型转换(例如 f32、f64)
- 网络类型指定(例如 f32、f64)
- 保存和加载
- 单层权重
- 整个网络权重
- 自定义(二进制)文件格式,带有解释内容的标题
- 日志记录
- 显示
Network
时添加参数数量
灵感
来源
依赖项
~5.5–7.5MB
~122K SLoC