3 个版本
0.0.3 | 2022 年 8 月 19 日 |
---|---|
0.0.2 | 2022 年 4 月 13 日 |
0.0.1 | 2019 年 9 月 30 日 |
#879 in 过程宏
3,689 每月下载量
在 15 个库中使用(通过 tensorflow)
14KB
355 行
TensorFlow Rust 为 TensorFlow 提供了 Rust 语言的惯用绑定。
注意:此项目仍在积极开发中,不保证具有稳定的 API。
入门
由于此库依赖于 TensorFlow C API,因此需要先下载或编译。此库将自动为您下载或编译 TensorFlow 共享库,但也可以手动安装 TensorFlow,库将相应地拾取。
先决条件
如果系统上已经可以找到 TensorFlow 共享库,则将使用它们。如果您的系统是 x86-64 Linux 或 Mac,则将下载预构建的二进制文件,且不需要特殊先决条件。
否则,需要以下依赖项来编译和构建此库,这包括编译 TensorFlow 本身
- git
- bazel
- Python 依赖项
numpy
,dev
,pip
和wheel
- 可选,支持基于 GPU 处理的 CUDA 软件包
TensorFlow 网站提供了有关如何获取和安装这些依赖项的详细说明,因此如果您不确定,请查看文档以获取更多信息。
某些示例使用 Python 编写的 TensorFlow 代码,需要完整安装 TensorFlow。
支持的最小 Rust 版本是 1.58。
使用
将此添加到您的 Cargo.toml
[dependencies]
tensorflow = "0.21.0"
并将其添加到您的库根目录
extern crate tensorflow;
然后运行 cargo build -j 1
。tensorflow-sys 库的 build.rs
现在会下载一个预先构建的、仅支持CPU的基本二进制文件(默认选项),或者在环境变量强制的情况下编译 TensorFlow。如果在过程中编译 TensorFlow,由于完整编译非常消耗内存,我们建议使用 -j 1
标志,这个标志告诉 cargo 只使用一个任务,进而告诉 TensorFlow 只使用一个任务进行构建。尽管如此,如果您有很多 RAM,您当然可以使用更高的值。
要包含特别不稳定的 API(目前是 expr
模块),使用 --features tensorflow_unstable
。
目前,请参阅 示例 了解如何使用此绑定更详细的信息。
张量最大显示
在打印或调试张量时,默认会打印每个元素,这可以通过更改环境变量进行修改
TF_RUST_DISPLAY_MAX=5
如果值超过限制,将截断值
let values: Vec<u64> = (0..100000).collect();
let t = Tensor::new(&[2, 50000]).with_values(&values).unwrap();
dbg!(t);
t = Tensor<u64> {
values: [
[0, 1, 2, 3, 4, ...],
...
],
dtype: uint64,
shape: [2, 50000]
}
GPU 支持
要启用 GPU 支持,请在您的 Cargo.toml 中使用 tensorflow_gpu
功能
[dependencies]
tensorflow = { version = "0.21.0", features = ["tensorflow_gpu"] }
手动 TensorFlow 编译
如果您想针对未发布/不受支持的 TensorFlow 版本工作或使用针对您的机器优化的构建,手动编译是最佳选择。
有关详细信息,请参阅 tensorflow-sys/README.md。
常见问题解答
为什么编译器说 API 的某些部分不存在?
API 中特别不稳定的部分(目前是 expr
模块)在 tensorflow_unstable
功能门后面,以防止意外使用。请参阅 http://doc.crates.io/manifest.html#the-features-section。(我们更愿意使用 #[unstable]
属性,但该属性 尚不存在。)
如何...?
首先尝试 文档,看看是否回答了您的问题。如果没有,请查看示例文件夹。请注意,可能没有针对您确切问题的示例,但它可能通过演示其他内容来回答您的问题。
如果上述所有内容都不能帮助您,您可以在 TensorFlow Rust Google Group 上提出您的问题。
贡献
开发者和用户都欢迎加入 TensorFlow Rust Google Group。
请阅读有关如何贡献代码的 贡献指南。
这不是一个官方的 Google 产品。
RFC 是 带有 RFC 标签的问题。检查它们并发表评论。讨论是受欢迎的。毕竟,这就是请求评论的目的!
许可
本项目受 Apache 2.0 许可证 的条款约束。
lib.rs
:
该软件包为 TensorFlow 的内部使用提供了宏。不提供向后兼容性保证。
依赖关系
~1.5MB
~34K SLoC