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 机器学习

Download history 1163/week @ 2024-04-22 978/week @ 2024-04-29 920/week @ 2024-05-06 1186/week @ 2024-05-13 1362/week @ 2024-05-20 1313/week @ 2024-05-27 1332/week @ 2024-06-03 1369/week @ 2024-06-10 913/week @ 2024-06-17 1056/week @ 2024-06-24 517/week @ 2024-07-01 776/week @ 2024-07-08 961/week @ 2024-07-15 1177/week @ 2024-07-22 1372/week @ 2024-07-29 1049/week @ 2024-08-05

4,610 每月下载量
19 个crate中 使用 19 (直接)

Apache-2.0

15MB
357K SLoC

SIG Rust TensorFlow

Version Build status

TensorFlow Rust为TensorFlow提供了惯用的Rust语言绑定。

注意:此项目仍在积极开发中,并不能保证具有稳定的API。

入门

由于这个crate依赖于TensorFlow C API,因此需要先下载或编译。这个crate将自动为您下载或编译TensorFlow共享库,但也可能手动安装TensorFlow,该crate将相应地提取。

先决条件

如果TensorFlow共享库已经在您的系统上,它们将被使用。如果您的系统是x86-64 Linux或Mac,将下载预构建的二进制文件,且不需要特殊先决条件。

否则,需要以下依赖项来编译和构建此crate,这包括编译TensorFlow本身

  • git
  • bazel
  • Python依赖项 numpydevpipwheel
  • 可选的,支持基于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