29个版本 (破坏性更新)
0.21.0 | 2023年8月15日 |
---|---|
0.20.0 | 2023年2月14日 |
0.19.1 | 2022年9月6日 |
0.18.0 | 2022年4月13日 |
0.0.3 | 2016年7月12日 |
#44 in 机器学习
4,610 每月下载量
在 19 个crate中 使用 19 (直接)
15MB
357K SLoC
TensorFlow Rust为TensorFlow提供了惯用的Rust语言绑定。
注意:此项目仍在积极开发中,并不能保证具有稳定的API。
入门
由于这个crate依赖于TensorFlow C API,因此需要先下载或编译。这个crate将自动为您下载或编译TensorFlow共享库,但也可能手动安装TensorFlow,该crate将相应地提取。
先决条件
如果TensorFlow共享库已经在您的系统上,它们将被使用。如果您的系统是x86-64 Linux或Mac,将下载预构建的二进制文件,且不需要特殊先决条件。
否则,需要以下依赖项来编译和构建此crate,这包括编译TensorFlow本身
- git
- bazel
- Python依赖项
numpy
、dev
、pip
和wheel
- 可选的,支持基于GPU处理的CUDA软件包
TensorFlow网站提供了如何获取和安装这些依赖项的详细说明,因此如果您不确定,请查看文档以获取更多信息。
一些示例使用了用Python编写的TensorFlow代码,并需要完整的TensorFlow安装。
最低支持的Rust版本是1.58。
用法
将此添加到您的 Cargo.toml
[dependencies]
tensorflow = "0.21.0"
并将此添加到您的crate根目录
extern crate tensorflow;
然后运行 cargo build -j 1
。tensorflow-sys crate 的 build.rs
现在会下载一个预先构建的、仅适用于 CPU 的基本二进制文件(默认设置),或者如果通过环境变量强制编译 TensorFlow。如果在过程中编译 TensorFlow,由于完整编译非常消耗内存,我们建议使用 -j 1
标志,这将告诉 cargo 只使用一个任务,进而告诉 TensorFlow 只使用一个任务进行构建。尽管如此,如果您有大量的 RAM,显然可以使用更高的值。
要包含特别不稳定的 API(当前是 expr
模块),使用 --features tensorflow_unstable
。
目前,请参阅 示例 了解如何使用此绑定更详细的信息。
Tensor 最大显示
在打印或调试张量时,默认情况下将打印每个元素,可以通过更改环境变量来修改。
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 许可证的条款进行许可。
依赖关系
~3–6.5MB
~124K SLoC