1个不稳定版本

0.1.0 2019年7月15日

#779 in 机器学习

MIT/Apache

135KB
3.5K SLoC

[ W. I. P. ]

又一个Rust神经网络框架,即YARNN

darknetleaf的启发

它现在能做什么

  • 不需要std(仅对张量分配使用alloc,bump allocator是可以的,因此它可以编译到stm32f4板)
  • 可用层:LinearReLuSigmoidSoftmax(没有反向传播),Conv2dZeroPadding2dMaxPool2dAvgPool2d(没有反向传播),Flatten
  • 可用优化器:SgdAdamRMSProp
  • 可用损失:CrossEntropy(没有正向传播),MeanSquareError
  • 可用后端:NativeNativeBlas(目前还没有卷积)

它将来能做什么(我希望)

第一阶段

  • 使用WASM在浏览器中运行yarnn的示例
  • stm32f4板上运行yarnn的示例
  • 完成AvgPool2d的反向传播
  • 添加Dropout
  • 添加BatchNorm
  • 具有BLAS支持的卷积

第二阶段

  • CUDA支持
  • OpenCL支持

第三阶段

  • DepthwiseConv2d
  • Conv3d
  • Deconv2d
  • k210后端

模型定义示例

use yarnn::model;
use yarnn::layer::*;
use yarnn::layers::*;

model! {
    MnistConvModel (h: u32, w: u32, c: u32) {
        input_shape: (c, h, w),
        layers: {
            Conv2d<N, B, O> {
                filters: 8
            },
            ReLu<N, B>,
            MaxPool2d<N, B> {
                pool: (2, 2)
            },

            Conv2d<N, B, O> {
                filters: 8
            },
            ReLu<N, B>,
            MaxPool2d<N, B> {
                pool: (2, 2)
            },

            Flatten<N, B>,
            Linear<N, B, O> {
                units: 10
            },

            Sigmoid<N, B>
        }
    }
}

欢迎贡献者

依赖项

~775KB
~15K SLoC