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机器学习

Download history 470/week @ 2024-05-16 43/week @ 2024-05-23 137/week @ 2024-05-30 7/week @ 2024-06-06 3/week @ 2024-06-13 391/week @ 2024-06-27 273/week @ 2024-07-04 2/week @ 2024-07-11

868 每月下载量

GPL-3.0 许可证

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