1 个不稳定版本
0.1.0 | 2019 年 1 月 8 日 |
---|
#792 in 机器学习
130KB
3.5K SLoC
一个正在开发中的、实验性的 Rust 神经网络库
该软件包的目标是提供一个简单、易用、最小化、快速且适用于生产的 Rust 神经网络库。
这仍然是实验性的! 严肃地说,我是认真的。
要求
目前此库仅在 Rust nightly 上运行,并需要 Python 3.7、TensorFlow 1.12 和 Numpy 1.15(通过 Python!)在运行时,因为它使用 TensorFlow Keras。可能与旧版本兼容;但不保证。
短期路线图
- 支持 TensorFlow Keras 作为后端(经过实战检验,但非常重)
- 支持基本层类型
- 全连接
- Dropout
- 激活
- 逻辑回归
- TanH
- ReLU
- LeakyReLU
- ELU
- Softmax
- 批量归一化
- 卷积
- 池化
- RNN(可能)
- 支持基本层类型
- 添加 MNIST 示例
- 添加纯 Rust Xavier 权重初始化
- 添加权重预训练
- 添加原生后端(使用纯 Rust 代码重新实现计算部分)
- 使用多线程
- 使用 SIMD
- 使 Python + TensorFlow 依赖项可选(编译时)
- 使 Python + TensorFlow 依赖项可选(运行时,以便用户不需要 libpython3.so)
- 添加完整的 API 文档并添加
#![deny(missing_docs)]
长期路线图
- 添加其他后端
- 确定计算抽象
- a) 定义一个类似于 Rust 的自定义计算语言和源级翻译器
- b) 在 Rust 中编写计算部分,编译到 WASM 并编写 WASM 字节码的重新编译器
- c) 编写 SIPR-V 重新编译器,并在可以编译到 SPIR-V 的语言中编写计算部分
- OpenCL
- Vulkan
- WebGL (?)
- 确定计算抽象
- 导出 C API
- 编译到 WebAssembly 并作为 JS 库发布到 NPM
我对机器学习和神经网络一无所知;这实际上是用来做什么的?
简而言之,神经网络是一种数学结构,可以自动学习如何将一种数据表示转换为另一种表示。比如说,你有一张你奶奶的老式黑白照片,你想给它上色。神经网络可以帮助你做到这一点!
在这种情况下,你会找一些已经上色的照片,并将它们转换为黑白。这样你就得到了一个用于训练神经网络的数据库!现在你可以告诉神经网络,这里有一批黑白照片,这里有同样的照片但它们是彩色的;请学习如何将黑白照片转换为彩色照片!
这就是神经网络会做的。如果训练得当,神经网络将学会如何泛化,换句话说——它将能够将几乎任何黑白照片转换成彩色照片,即使它以前从未见过这张特定的照片!
贡献
如果你想做出有意义的贡献(特别是展示TensorFlow的新功能)请先创建一个问题来讨论。这并不是一个研究级库,也不应该是一个庞大的工具箱。
许可证
许可如下
- Apache许可证版本2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
除非你明确声明,否则根据Apache-2.0许可证定义,你提交的任何有意贡献给作品的内容,应按照上述双重许可,不附加任何额外的条款或条件。
依赖项
~6MB
~119K SLoC