#neural-network #tensorflow #machine-learning #framework #keras

nightly 萨雷克

一个正在开发中的、实验性的使用 TensorFlow Keras 的神经网络库

1 个不稳定版本

0.1.0 2019 年 1 月 8 日

#792 in 机器学习

MIT/Apache

130KB
3.5K SLoC

Build Status

一个正在开发中的、实验性的 Rust 神经网络库

Documentation

该软件包的目标是提供一个简单、易用、最小化、快速且适用于生产的 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许可证定义,你提交的任何有意贡献给作品的内容,应按照上述双重许可,不附加任何额外的条款或条件。

依赖项

~6MB
~119K SLoC