#machine-learning #layer #opencl #plot #neural-network #hal #cpu

hal-ml

HAL:一个能够在 Nvidia、OpenCL 或 CPU BLAS 基础的计算后端上运行的机器学习库。它目前提供可堆叠的经典神经网络、RNN 以及即将推出的 LSTM。该软件包的一个特点是,我们正在尝试实现 RTRL(而不仅仅是 BPTT)以供循环层使用,以便提供一个坚实的在线学习框架。我们还将(在将来)实现各种层,例如单位 RNN、NTM 以及基于自适应计算时间的 LSTM。HAL 还具备在数组上进行绘图和执行许多基本数学操作的能力。

1 个不稳定版本

使用旧的 Rust 2015

0.2.0 2016 年 6 月 17 日

#662机器学习

BSD-3-Clause

105KB
2.5K SLoC

HAL : 超自适应学习

Rust 基于的跨 GPU 机器学习。构建状态

为什么选择 Rust?

此项目是为那些怀念强类型编译语言的人准备的。Rust 是特意选择的,因为 这个 此外,我们可以提供对操作的精细控制。这意味着可以在任何阶段获取张量的维度,无需处理未知形状的废话。我们还可以微控制步骤。例如,在 LSTM 上与每个前向时间步单独工作的例子。通常这些由内循环(Theano/Tensorflow 等)控制。

特性

  • 支持多 GPU [基于模型]
  • 支持 OpenCL + CUDA + 并行 CPU
  • LSTM 的内部 RTRL [进行中]
  • RNN [进行中]
  • 感知器、自编码器、卷积网络**[待办**]
  • 优化器:[SGD、Adam、AdaGrad**[待办**]**]
  • 激活函数:[线性、Sigmoid、Tanh、ReLU、LReLU、Softmax]
  • 初始化:[Lecun 均匀分布、Glorot 正态分布、Glorot 均匀分布、正态分布、均匀分布]
  • 数据收集器:[SinSource、MNIST**[进行中**] CIFAR10**[待办**]**]
  • 损失函数:[均方误差、L2、交叉熵]
  • 基于 OpenGL 的绘图和图像加载,更多信息请参见 这里
  • 支持多 GPU [水平] [待办**]

要求

  • Rust 1.8 +
  • 预安装 arrayfire 库(或者您可以按照以下说明手动编译)
cargo run --example autoencoder

安装

请参见这里

测试

HAL利用RUST的测试框架对所有的模块进行了广泛的测试。我们对单个函数以及层使用梯度检查。由于我们的设备探测方法,测试需要在单线程上运行。此外,为了测试[glfw问题],图形界面必须禁用。

AF_DISABLE_GRAPHICS=1 RUST_TEST_THREADS=1 cargo test

如果您想查看测试结果(以及基准测试)请运行

AF_DISABLE_GRAPHICS=1 RUST_TEST_THREADS=1 cargo test -- --nocapture

致谢

  • 感谢arrayfire团队与我合作,将rust绑定投入使用。
  • Keras的启发,许多函数的实现方式与之相似(除去Theano的无聊之处)。
  • 感谢Felix Gers博士对内部RTRL的见解
  • 感谢Sepp Hochreiter博士在LSTM上的建议

依赖项

~10–19MB
~290K SLoC