TensorFlow IO
项目描述
TensorFlow I/O
TensorFlow I/O 是一系列在 TensorFlow 内置支持中不可用的文件系统和文件格式。可以通过以下链接查看 TensorFlow I/O 支持的所有文件系统和文件格式的完整列表:这里。
使用 tensorflow-io 与 keras 结合非常简单。以下是一个使用 tensorflow-io 替换数据处理的 TensorFlow 入门示例:TensorFlow 快速入门
import tensorflow as tf
import tensorflow_io as tfio
# Read the MNIST data into the IODataset.
dataset_url = "https://storage.googleapis.com/cvdf-datasets/mnist/"
d_train = tfio.IODataset.from_mnist(
dataset_url + "train-images-idx3-ubyte.gz",
dataset_url + "train-labels-idx1-ubyte.gz",
)
# Shuffle the elements of the dataset.
d_train = d_train.shuffle(buffer_size=1024)
# By default image data is uint8, so convert to float32 using map().
d_train = d_train.map(lambda x, y: (tf.image.convert_image_dtype(x, tf.float32), y))
# prepare batches the data just like any other tf.data.Dataset
d_train = d_train.batch(32)
# Build the model.
model = tf.keras.models.Sequential(
[
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax),
]
)
# Compile the model.
model.compile(
optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"]
)
# Fit the model.
model.fit(d_train, epochs=5, steps_per_epoch=200)
在上面的 MNIST 示例中,访问数据集文件的 URL 直接传递给 tfio.IODataset.from_mnist
API 调用。这是由于 tensorflow-io
内置对 HTTP
/HTTPS
文件系统的支持,从而消除了在本地目录中下载和保存数据集的需求。
注意:由于 tensorflow-io
可以在需要时自动检测和解压 MNIST 数据集,因此我们可以直接将压缩文件的 URL(gzip)传递给 API 调用。
请查阅官方 文档 了解该软件包更详细和有趣的用法。
安装
Python 包
可以使用以下命令使用 pip 直接安装 tensorflow-io
Python 包:
$ pip install tensorflow-io
对于那些稍微有些冒险精神的人,也可以尝试我们的夜间二进制文件
$ pip install tensorflow-io-nightly
为了确保您拥有与 TensorFlow-IO 兼容的 TensorFlow 版本,您可以在安装期间指定 tensorflow
额外需求
pip install tensorflow-io[tensorflow]
对于 tensorflow-gpu
、tensorflow-cpu
和 tensorflow-rocm
包也存在类似的额外需求。
Docker 镜像
除了 pip 包之外,还可以使用 Docker 镜像来快速开始。
对于稳定构建
$ docker pull tfsigio/tfio:latest
$ docker run -it --rm --name tfio-latest tfsigio/tfio:latest
对于夜间构建
$ docker pull tfsigio/tfio:nightly
$ docker run -it --rm --name tfio-nightly tfsigio/tfio:nightly
R 包
一旦成功安装了 tensorflow-io
Python 包,您就可以通过以下方式安装 GitHub 上的 R 包的开发版本:
if (!require("remotes")) install.packages("remotes")
remotes::install_github("tensorflow/io", subdir = "R-package")
TensorFlow 版本兼容性
为了确保与 TensorFlow 的兼容性,建议根据以下表格安装匹配版本的 TensorFlow I/O。您可以通过以下链接找到发布列表:这里。
TensorFlow I/O 版本 | TensorFlow 兼容性 | 发布日期 |
---|---|---|
0.37.1 | 2.16.x | 2024 年 7 月 1 日 |
0.37.0 | 2.16.x | 2024 年 4 月 25 日 |
0.36.0 | 2.15.x | 2024 年 2 月 2 日 |
0.35.0 | 2.14.x | 2023 年 12 月 18 日 |
0.34.0 | 2.13.x | 2023 年 9 月 8 日 |
0.33.0 | 2.13.x | 2023 年 8 月 1 日 |
0.32.0 | 2.12.x | 2023 年 3 月 28 日 |
0.31.0 | 2.11.x | 2023 年 2 月 25 日 |
0.30.0 | 2.11.x | 2023 年 1 月 20 日 |
0.29.0 | 2.11.x | 2022 年 12 月 18 日 |
0.28.0 | 2.11.x | 2022 年 11 月 21 日 |
0.27.0 | 2.10.x | 2022 年 9 月 8 日 |
0.26.0 | 2.9.x | 2022 年 5 月 17 日 |
0.25.0 | 2.8.x | 2022 年 4 月 19 日 |
0.24.0 | 2.8.x | 2022 年 2 月 4 日 |
0.23.1 | 2.7.x | 2021年12月15日 |
0.23.0 | 2.7.x | 2021年12月14日 |
0.22.0 | 2.7.x | 2021年11月10日 |
0.21.0 | 2.6.x | 2021年9月12日 |
0.20.0 | 2.6.x | 2021年8月11日 |
0.19.1 | 2.5.x | 2021年7月25日 |
0.19.0 | 2.5.x | 2021年6月25日 |
0.18.0 | 2.5.x | 2021年5月13日 |
0.17.1 | 2.4.x | 2021年4月16日 |
0.17.0 | 2.4.x | 2020年12月14日 |
0.16.0 | 2.3.x | 2020年10月23日 |
0.15.0 | 2.3.x | 2020年8月3日 |
0.14.0 | 2.2.x | 2020年7月8日 |
0.13.0 | 2.2.x | 2020年5月10日 |
0.12.0 | 2.1.x | 2020年2月28日 |
0.11.0 | 2.1.x | 2020年1月10日 |
0.10.0 | 2.0.x | 2019年12月5日 |
0.9.1 | 2.0.x | 2019年11月15日 |
0.9.0 | 2.0.x | 2019年10月18日 |
0.8.1 | 1.15.x | 2019年11月15日 |
0.8.0 | 1.15.x | 2019年10月17日 |
0.7.2 | 1.14.x | 2019年11月15日 |
0.7.1 | 1.14.x | 2019年10月18日 |
0.7.0 | 1.14.x | 2019年7月14日 |
0.6.0 | 1.13.x | 2019年5月29日 |
0.5.0 | 1.13.x | 2019年4月12日 |
0.4.0 | 1.13.x | 2019年3月1日 |
0.3.0 | 1.12.0 | 2019年2月15日 |
0.2.0 | 1.12.0 | 2019年1月29日 |
0.1.0 | 1.12.0 | 2018年12月16日 |
性能基准测试
我们使用GitHub页面来记录API性能基准测试的结果。基准测试任务在提交到master
分支时触发,有助于跟踪性能与提交的关系。
贡献
TensorFlow I/O是一个由社区领导的开源项目。因此,该项目依赖于公共贡献、错误修复和文档。请参阅
构建状态和持续集成
构建 | 状态 |
---|---|
Linux CPU Python 2 | |
Linux CPU Python 3 | |
Linux GPU Python 2 | |
Linux GPU Python 3 |
由于manylinux2010的要求,TensorFlow I/O在Linux上使用Ubuntu:16.04 + Developer Toolset 7 (GCC 7.3)进行构建。在Ubuntu 16.04上配置Developer Toolset 7并不完全直接。如果系统已安装docker,则以下命令将自动构建兼容manylinux2010的whl包
#!/usr/bin/env bash
ls dist/*
for f in dist/*.whl; do
docker run -i --rm -v $PWD:/v -w /v --net=host quay.io/pypa/manylinux2010_x86_64 bash -x -e /v/tools/build/auditwheel repair --plat manylinux2010_x86_64 $f
done
sudo chown -R $(id -nu):$(id -ng) .
ls wheelhouse/*
构建需要一些时间,但一旦完成,将在wheelhouse
目录中提供与python 3.5
、3.6
、3.7
兼容的whl包。
在macOS上,可以使用相同的命令。但是,脚本期望shell中的python
,并且只会生成与shell中python
版本匹配的whl包。如果您想要为特定的python构建whl包,则必须将此版本的python在shell中别名为python
。有关如何操作的说明,请参阅.github/workflows/build.yml中的Auditwheel步骤。
注意,上述命令也是我们用于发布Linux和macOS软件包时使用的命令。
TensorFlow I/O使用GitHub Workflows和Google CI (Kokoro)进行持续集成。GitHub Workflows用于macOS构建和测试。Kokoro用于Linux构建和测试。同样,由于manylinux2010的要求,在Linux上whl包始终使用Ubuntu 16.04 + Developer Toolset 7构建。测试在具有不同python3版本的多种系统上进行,以确保良好的覆盖率。
Python | Ubuntu 18.04 | Ubuntu 20.04 | macOS + osx9 | Windows-2019 |
---|---|---|---|---|
2.7 | :heavy_check_mark | :heavy_check_mark | :heavy_check_mark | N/A |
3.7 | :heavy_check_mark | :heavy_check_mark | :heavy_check_mark | :heavy_check_mark |
3.8 | :heavy_check_mark | :heavy_check_mark | :heavy_check_mark | :heavy_check_mark |
TensorFlow I/O与许多系统和云供应商集成,例如Prometheus、Apache Kafka、Apache Ignite、Google Cloud PubSub、AWS Kinesis、Microsoft Azure Storage、Alibaba Cloud OSS等。
我们尽最大努力在持续集成中对这些系统进行测试。一些测试,如Prometheus、Kafka和Ignite,是在实时系统上进行的,这意味着在测试运行之前,我们在CI机器上安装Prometheus/Kafka/Ignite。一些测试,如Kinesis、PubSub和Azure存储,是通过官方或非官方的模拟器进行的。在可能的情况下,也会进行离线测试,尽管通过离线测试覆盖的系统可能没有实时系统或模拟器那样的覆盖水平。
实时系统 | 模拟器 | CI集成 | 离线 | |
---|---|---|---|---|
Apache Kafka | :heavy_check_mark | :heavy_check_mark | ||
Apache Ignite | :heavy_check_mark | :heavy_check_mark | ||
Prometheus | :heavy_check_mark | :heavy_check_mark | ||
Google PubSub | :heavy_check_mark | :heavy_check_mark | ||
Azure存储 | :heavy_check_mark | :heavy_check_mark | ||
AWS Kinesis | :heavy_check_mark | :heavy_check_mark | ||
阿里云OSS | :heavy_check_mark | |||
Google BigTable/BigQuery | 待添加 | |||
Elasticsearch(实验性) | :heavy_check_mark | :heavy_check_mark | ||
MongoDB(实验性) | :heavy_check_mark | :heavy_check_mark |
模拟器的参考资料
- Google Cloud为Cloud PubSub提供的官方PubSub模拟器。
- Azure为Azure存储提供的官方Azurite模拟器。
- 由LocalStack提供的非官方LocalStack模拟器,用于AWS Kinesis。
社区
- SIG IO Google Group 和邮件列表: io@tensorflow.org
- SIG IO 月度会议笔记
- Gitter房间:tensorflow/sig-io
更多信息
- 使用分层存储和无需数据湖的流式机器学习 - Kai Waehner
- TensorFlow with Apache Arrow Datasets - Bryan Cutler
- 如何为TensorFlow构建自定义数据集 - Ivelin Ivanov
- TensorFlow on Apache Ignite - Anton Dmitriev
许可证
项目详情
tensorflow_io-0.37.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1abf9b8db2faa37c94aed7fef267c93e0fba30b6ec30f857a39ea7e89bf3748d |
|
MD5 | 7d65a79347d38f6fcf08f1f0b4886208 |
|
BLAKE2b-256 | b44c3f673f2ca7660f7defde57716a2978333db5bb9882c28f720713b0c476bd |
tensorflow_io-0.37.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1c51b213c8d9b933e1602fccfb8fd70e8b5719e27916fcbe088ca7f695c70f49 |
|
MD5 | 7d8ff9b7e985b1e79735075de3df1162 |
|
BLAKE2b-256 | 37ed27ada83e3802df4b235d921c8f402dbefd20b65c38e2915fed0cc914f851 |
tensorflow_io-0.37.1-cp312-cp312-macosx_12_0_arm64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1fdc5c28c038ab9ae0ad505a9fce45e6cc6dadd1133932d4f38fdea8d8a05900 |
|
MD5 | f0e901aabe4daf79fd2e5f11e6926774 |
|
BLAKE2b-256 | 65cfde4565efb945064b79225da5c18e16de56ff09e1436df3237bbfe3d2f5a1 |
tensorflow_io-0.37.1-cp312-cp312-macosx_10_14_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 42c587d9962554adbcfd2da17b51415dbb04c18afb06055649b7c3be4c21a266 |
|
MD5 | dba6dd962c9809bef855008a2a0393f7 |
|
BLAKE2b-256 | 7c746042510c333143c9ea7dda27cba7b7c3df1be1cd380ce018d7bc1c9ac3df |
tensorflow_io-0.37.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b072ae78143df8f786d3cbb9060b76f17f966824dd1e7906d3252c79525d2358 |
|
MD5 | 9612c2a88fcd1e930d516c38e00f60a6 |
|
BLAKE2b-256 | f05ef47443a14a00816fab54caf74599e2fcb34c05d6059e91f82126f8f4c68d |
tensorflow_io-0.37.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 144251635584e128060f7047a710e567bfac6171de03e0a79faf2b909bc689c4 |
|
MD5 | c04333730fefb77906e9937d187054e8 |
|
BLAKE2b-256 | f5348f3b1f9fd56ad6d0f1bd995c1c765d2bc137281f22976930db8ff5474247 |
哈希值 for tensorflow_io-0.37.1-cp311-cp311-macosx_12_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 410b70c108ce93f657147b8e9528353e1df5292a5e33cd6555d4cd964c856b0e |
|
MD5 | 25529e535bac9b3ce50861aa3abb9ad6 |
|
BLAKE2b-256 | 500f4770defb52f09d03b9cae6109dcfb329b471152a3c3e5cb472f59a28bece |
哈希值 for tensorflow_io-0.37.1-cp311-cp311-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 14c7ada03c2ab8ca3beca618833d0da8de1d693598827147c56a0dde54e17d87 |
|
MD5 | 5ceabb6b524782c37eed3e28bc69246f |
|
BLAKE2b-256 | df3591571185983a98453cf3baeee0cad433c3e5abacc2baf16f80ff39f3c067 |
哈希值 for tensorflow_io-0.37.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dee4a2d6c3586bda78d747d003d063ec503c6ac124c24d4dfcf4f105cd9309a1 |
|
MD5 | 7a92a1e404dfdcbb721707029b3cd2d5 |
|
BLAKE2b-256 | fad6926232dff47d3425df15d6b269258c4770fc058edaae9f34209c97ad8785 |
哈希值 for tensorflow_io-0.37.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d7ce860f864e3f9ef12bb8980c4e80a941713bfe7dbfe71e6e05dbb96003c8d6 |
|
MD5 | 53645032fb2fb4c21987a8e6f71dd31b |
|
BLAKE2b-256 | c9aa0b510a4914c0727c4244698aa3ff5c426eb1a8275e3c374a758e7ba0582e |
哈希值 for tensorflow_io-0.37.1-cp310-cp310-macosx_12_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e9488e2d737057121e1218eeb34f96f2d2423ed3cf7d00eba68bc3a5b66d2366 |
|
MD5 | 2535a930895876b764b6ac503871d3a9 |
|
BLAKE2b-256 | 094b4ac0c7bacc6bfcf2ce1500931b288bcf52eacc6398ae946d7724f2f88421 |
哈希值 for tensorflow_io-0.37.1-cp310-cp310-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dc1adb4a39a02c2d389e2711439ca7d03c4ccf0c5074af5ee123c5d5ca372dcb |
|
MD5 | a05393faa36abe98821bf8b6dec49552 |
|
BLAKE2b-256 | 27c58f01fb6df8fc2eb0a7d6a5f1e3ff010268dd48bef55c2117e4eaa3c8720e |
哈希值 for tensorflow_io-0.37.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 43e8234271e39aece83edb2595b0e47dbc056984b95f3dc3d26cd4f9433944ef |
|
MD5 | 9c07fb9401c034c18b605d393e486978 |
|
BLAKE2b-256 | 24ce441e1c6d8018257e7249299f60bbe9ec90466d7bd75557f3d3f256a676be |
哈希值 for tensorflow_io-0.37.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 255e26143b254db80b6a55e1f063f83dad74046e3429d7e95e63434cc418e335 |
|
MD5 | 95e01e626e636d07db614be89f422d54 |
|
BLAKE2b-256 | 7ec170b2dd8e55ab3a3eb6a2e701ce4bb5a4491c3331ff5b443f1c895599387d |
哈希值 for tensorflow_io-0.37.1-cp39-cp39-macosx_12_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1f5da94e61350a3ec076b9fa2beb947ecd120a25ad3fed2817a1d150b983b30b |
|
MD5 | 4627a5443a794b79718ff2b5f7e82275 |
|
BLAKE2b-256 | e2531dd3be028a5fa4721253d54cfe126b836d85e6541ca019e9400a5d4d4712 |
哈希值 for tensorflow_io-0.37.1-cp39-cp39-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c36b50eaf97f26e2918b5e983e77c872024aded7d624b9cb2dc7514ff5f4b4ff |
|
MD5 | 09cadced6241db92a5d2ededba978af4 |
|
BLAKE2b-256 | f6006850d9813dd4b34c436ef413573a54d34f40a70ba3d91dce88b2596f84ec |