TensorFlow I/O
项目描述
TensorFlow I/O
TensorFlow I/O 是一组不包含在 TensorFlow 内置支持的文件系统和文件格式。TensorFlow I/O 支持的文件系统和文件格式的完整列表可以在这里找到。
使用 tensorflow-io 与 keras 结合非常简单。以下是一个示例,用 tensorflow-io 替换了数据处理的方面,以开始使用 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 数据集(如果需要),因此我们可以直接将压缩文件(gzip)的 URL 传递给 API 调用。
请查看官方文档以获取该包更详细和有趣的用法。
安装
Python 包
可以使用 pip 直接使用以下命令安装 tensorflow-io
Python 包:
$ pip install tensorflow-io
对于一些更爱冒险的人,也可以尝试我们的夜间二进制文件
$ pip install tensorflow-io-nightly
为了确保您有与 TensorFlow-I/O 兼容的 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-pages来记录API性能基准测试的结果。基准测试作业在每次对master
分支提交时触发,并便于跟踪与提交相关的性能。
贡献
Tensorflow I/O是一个由社区主导的开源项目。因此,该项目依赖于公众的贡献、错误修复和文档。请参阅
构建状态和CI
构建 | 状态 |
---|---|
Linux CPU Python 2 | |
Linux CPU Python 3 | |
Linux GPU Python 2 | |
Linux GPU Python 3 |
由于许多linux2010的要求,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包,则必须在shell中将此版本的python别名为python
。有关如何操作的说明,请参阅.github/workflows/build.yml中的Auditwheel步骤。
注意,上述命令也是我们用于发布Linux和macOS软件包时使用的命令。
TensorFlow I/O使用GitHub Workflows和Google CI(Kokoro)进行持续集成。GitHub Workflows用于macOS构建和测试。Kokoro用于Linux构建和测试。再次强调,由于许多linux2010的要求,在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 Storage,是通过官方或非官方的模拟器完成的。在可能的情况下,也会进行离线测试,尽管通过离线测试覆盖的系统可能没有实时系统或模拟器那样的覆盖率。
实时系统 | 模拟器 | 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 Storage | :heavy_check_mark | :heavy_check_mark | ||
AWS Kinesis | :heavy_check_mark | :heavy_check_mark | ||
Alibaba Cloud OSS | :heavy_check_mark | |||
Google BigTable/BigQuery | 待添加 | |||
Elasticsearch (实验性) | :heavy_check_mark | :heavy_check_mark | ||
MongoDB (实验性) | :heavy_check_mark | :heavy_check_mark |
模拟器的参考
- 由Google Cloud提供的官方PubSub模拟器用于Cloud PubSub。
- 由Azure提供的官方Azurite模拟器用于Azure Storage。
- 由LocalStack提供的非官方LocalStack模拟器用于AWS Kinesis。
社区
- SIG IO Google Group和邮件列表:io@tensorflow.org
- 信号IO 月度会议记录
- 聊天室: tensorflow/sig-io
附加信息
- 分层存储和无数据湖的流式机器学习 - Kai Waehner
- TensorFlow with Apache Arrow Datasets - Bryan Cutler
- 如何为Tensorflow构建自定义数据集 - Ivelin Ivanov
- TensorFlow on Apache Ignite - Anton Dmitriev
许可
项目详情
哈希 用于 tensorflow_io_gcs_filesystem-0.37.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 286389a203a5aee1a4fa2e53718c661091aa5fea797ff4fa6715ab8436b02e6c |
|
MD5 | 64ccbf49ee4f25b9e5f8a5cd4c554eb6 |
|
BLAKE2b-256 | f09b790d290c232bce9b691391cf16e95a96e469669c56abfb1d9d0f35fa437c |
哈希 用于 tensorflow_io_gcs_filesystem-0.37.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fbb33f1745f218464a59cecd9a18e32ca927b0f4d77abd8f8671b645cc1a182f |
|
MD5 | 03f2a05106338536fb9a5832dc9b91d4 |
|
BLAKE2b-256 | d346962f47af08bd39fc9feb280d3192825431a91a078c856d17a78ae4884eb1 |
哈希 用于 tensorflow_io_gcs_filesystem-0.37.1-cp312-cp312-macosx_12_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fe8dcc6d222258a080ac3dfcaaaa347325ce36a7a046277f6b3e19abc1efb3c5 |
|
MD5 | 9188e067bae225df92eac5ebf6921cee |
|
BLAKE2b-256 | 439bbe27588352d7bd971696874db92d370f578715c17c0ccb27e4b13e16751e |
哈希 用于 tensorflow_io_gcs_filesystem-0.37.1-cp312-cp312-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ffebb6666a7bfc28005f4fbbb111a455b5e7d6cd3b12752b7050863ecb27d5cc |
|
MD5 | 30a7bfd6d2915f08e82a1e062f4abc20 |
|
BLAKE2b-256 | 70834422804257fe2942ae0af4ea5bcc9df59cb6cb1bd092202ef240751d16aa |
哈希 用于 tensorflow_io_gcs_filesystem-0.37.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ee7c8ee5fe2fd8cb6392669ef16e71841133041fee8a330eff519ad9b36e4556 |
|
MD5 | 06825cdf6c1e23ddb680ffd670a71ff2 |
|
BLAKE2b-256 | 667fe36ae148c2f03d61ca1bff24bc13a0fef6d6825c966abef73fc6f880a23b |
哈希 用于 tensorflow_io_gcs_filesystem-0.37.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6e1f2796b57e799a8ca1b75bf47c2aaa437c968408cc1a402a9862929e104cda |
|
MD5 | 8ba9a408a727797cd0ca2add6417bfc7 |
|
BLAKE2b-256 | debfba597d3884c77d05a78050f3c178933d69e3f80200a261df6eaa920656cd |
哈希 用于 tensorflow_io_gcs_filesystem-0.37.1-cp311-cp311-macosx_12_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b02f9c5f94fd62773954a04f69b68c4d576d076fd0db4ca25d5479f0fbfcdbad |
|
MD5 | 1d85ba54383213c41105b3190845a63f |
|
BLAKE2b-256 | 5bcc16634e76f3647fbec18187258da3ba11184a6232dcf9073dc44579076d36 |
哈希 用于 tensorflow_io_gcs_filesystem-0.37.1-cp311-cp311-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 32c50ab4e29a23c1f91cd0f9ab8c381a0ab10f45ef5c5252e94965916041737c |
|
MD5 | fcffee8b995bb261623b6d3f3bcb4b56 |
|
BLAKE2b-256 | 409bb2fb82d0da673b17a334f785fc19c23483165019ddc33b275ef25ca31173 |
哈希 用于 tensorflow_io_gcs_filesystem-0.37.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9679b36e3a80921876f31685ab6f7270f3411a4cc51bc2847e80d0e4b5291e27 |
|
MD5 | 8c07b62b919527b90232ad33a242150d |
|
BLAKE2b-256 | f34847b7d25572961a48b1de3729b7a11e835b888e41e0203cca82df95d23b91 |
哈希值 用于 tensorflow_io_gcs_filesystem-0.37.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8febbfcc67c61e542a5ac1a98c7c20a91a5e1afc2e14b1ef0cb7c28bc3b6aa70 |
|
MD5 | c43d5494c4897267cf921a5f4340d754 |
|
BLAKE2b-256 | e2199095c69e22c879cb3896321e676c69273a549a3148c4f62aa4bc5ebdb20f |
哈希值 用于 tensorflow_io_gcs_filesystem-0.37.1-cp310-cp310-macosx_12_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 257aab23470a0796978efc9c2bcf8b0bc80f22e6298612a4c0a50d3f4e88060c |
|
MD5 | c0314f9e070aac0de0168d0fb116835d |
|
BLAKE2b-256 | 1c553849a188cc15e58fefde20e9524d124a629a67a06b4dc0f6c881cb3c6e39 |
哈希值 用于 tensorflow_io_gcs_filesystem-0.37.1-cp310-cp310-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 249c12b830165841411ba71e08215d0e94277a49c551e6dd5d72aab54fe5491b |
|
MD5 | cbccd3630da1ccde013181385e49a435 |
|
BLAKE2b-256 | e9a312d7e7326a707919b321e2d6e4c88eb61596457940fd2b8ff3e9b7fac8a7 |
哈希值 用于 tensorflow_io_gcs_filesystem-0.37.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0df00891669390078a003cedbdd3b8e645c718b111917535fa1d7725e95cdb95 |
|
MD5 | e40164ecf5070763aa56585bd235b97b |
|
BLAKE2b-256 | 3dcb7dcee55fc5a7d7d8a862e12519322851cd5fe5b086f946fd71e4ae1ef281 |
哈希值 用于 tensorflow_io_gcs_filesystem-0.37.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 426de1173cb81fbd62becec2012fc00322a295326d90eb6c737fab636f182aed |
|
MD5 | ad75a00b6a4ad6fca7b645a53b360369 |
|
BLAKE2b-256 | 665f334a011caa1eb97689274d1141df8e6b7a25e389f0390bdcd90235de9783 |
哈希值 用于 tensorflow_io_gcs_filesystem-0.37.1-cp39-cp39-macosx_12_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8943036bbf84e7a2be3705cb56f9c9df7c48c9e614bb941f0936c58e3ca89d6f |
|
MD5 | f878f01106a666eb24b8217775201cb3 |
|
BLAKE2b-256 | 7af9ce6a0efde262a79361f0d67392fdf0d0406781a1ee4fc48d0d8b0553b311 |
哈希值 用于 tensorflow_io_gcs_filesystem-0.37.1-cp39-cp39-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ee5da49019670ed364f3e5fb86b46420841a6c3cb52a300553c63841671b3e6d |
|
MD5 | ce3f86312bf81c15f5e553ac2ba67c5b |
|
BLAKE2b-256 | 124f798df777498fab9dc683a658688e962f0af56454eb040c90f836fd9fa67c |