2 个版本
使用旧Rust 2015
0.0.2 | 2016年7月12日 |
---|---|
0.0.1 | 2016年5月5日 |
#8 in #tensor-flow
3KB
81 行
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"
并将此添加到您的crate根目录
extern crate tensorflow;
然后运行 cargo build -j 1
. tensorflow-sys 链接库的 build.rs
现在会下载预构建的、仅支持 CPU 的基本二进制文件(默认选项),或者在环境变量的强制下编译 TensorFlow。如果在此过程中编译 TensorFlow,由于完整编译非常消耗内存,我们建议使用 -j 1
标志,该标志告诉 cargo 只使用一个任务,进而告诉 TensorFlow 仅使用一个任务进行构建。然而,如果您有大量内存,显然可以使用更高的值。
要包含特别不稳定的 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。
常见问题解答 (FAQ)
为什么编译器说 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 标签的问题。查看它们并发表评论。欢迎讨论。毕竟,这就是请求评论 (RFC) 的目的!
许可
本项目根据 Apache 2.0 许可证的条款进行许可。
依赖项
~0–1.3MB
~27K SLoC