TensorFlow IO
项目描述
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
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.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 + 开发者工具集7 (GCC 7.3) 进行构建。使用Ubuntu 16.04和开发者工具集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/*
构建需要一些时间,但一旦完成,Python 3.5、3.6、3.7兼容的whl软件包将可在wheelhouse目录中找到。
在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构建和测试。再次强调,由于manylinux2010的要求,Linux上的whl软件包始终使用Ubuntu 16.04 + 开发者工具集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存储、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 | ||
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为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与Apache Arrow Datasets - Bryan Cutler
- 如何为TensorFlow构建自定义Dataset - Ivelin Ivanov
- TensorFlow在Apache Ignite上 - Anton Dmitriev
许可
项目详情
哈希值 for tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp39-cp39-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3afe90e7467017bda4e98883de7dac4eb709668bb8c558b7aa47b701d34bd8d0 |
|
MD5 | f94ad6af8c8e820e35c50e2bf6767a3d |
|
BLAKE2b-256 | ca7bfa68914895a5490bd932e319a558b777e9be76fd3eef32dc7335ecb67a40 |
哈希值 for tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | eaacc543a72dcb54c670cd1db20aff0bffa231e3fed4867befb913df8317585d |
|
MD5 | 63f3493b74295dc9c8f2e67233a57fa4 |
|
BLAKE2b-256 | 1866d440bd714b4f0a79ab7c7004166693981a31f8027c34d7f65eb72b21a416 |
哈希值 for tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp39-cp39-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 16dd08a9be912c652a7118eeb43645206b6ab7f368d1747b769981e3d4ffd00e |
|
MD5 | b17cf977a51ebf24987197e69d322144 |
|
BLAKE2b-256 | e529e4c8c3a4410822b3959b2eae87b4119bbc11f32f904d561e5d7bf101748a |
哈希值 for tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp38-cp38-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ab476a12adfafcde4ab527195528dec39439fa7faf58fe86e0b8dc45e48ff2d3 |
|
MD5 | c5f082d2a5fffd2658337cceb1c79f66 |
|
BLAKE2b-256 | 7172c4f3e169ac56d9408d5c163a8a6c8c2c167f052f22f3cea5a7b386243d53 |
哈希值 for tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1fa555a2e2bf06e5d086013d3f4c9744b9b351794836fc717569a30e422effc2 |
|
MD5 | 61be675428fe0bb45a8445d621d49d55 |
|
BLAKE2b-256 | af6fbd89904567b675794c96b4b923ace6604ae0add4e2b4f3a339fe45b512eb |
哈希值 for tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp38-cp38-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 924353a70b7653423910ec08f0b583479514771b9ce32cda3c7fca0417da8cbc |
|
MD5 | c17625c1d5a83323e619b0b65a30b3e1 |
|
BLAKE2b-256 | 80a77ea0fab6455ed51ea970aca5e8a04fb1d052a204a2c21a7540d10b649f8b |
哈希值 for tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp37-cp37m-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5bf65c2fd3e1c6402c8fbb7e1fc099bb3c55c26acde3a931ef87cbbe9cde6a67 |
|
MD5 | 542228336a9126aa8974aa21a655da83 |
|
BLAKE2b-256 | c9c31348422576b66759f5c5a42639634a72735abb6067ddbcdaa5381213c863 |
哈希值 for tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9080c7136299694c396582b4312e10349184cc65da0bfde4158f8fb98d69942e |
|
MD5 | a3fd869c5f9577a44d2d2d60ce0364bf |
|
BLAKE2b-256 | 5db69b6e14f2ccf033498579f21985081b52b1bd3b835865384d0ba2031bb97a |
哈希值 for tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp37-cp37m-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 91c16522ffff0e5ab9b0026664c3335ff5903783c0c3dac300feaebae61438aa |
|
MD5 | 3431ac06d9e6086ea74f63c67788129c |
|
BLAKE2b-256 | d256b3d22536943f89bc21aef043ba3efdd42edb42a68855ec83fbac092e2c80 |
哈希值 for tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp36-cp36m-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c78b1aa72b62583e5c1ed20479d23b726f3e5d10ea1d0b5ce3a5fe332a676cdb |
|
MD5 | 2a17ecd3a34b15f027c3f6895d574ff4 |
|
BLAKE2b-256 | 8047771924fb51ed175438effe8c4f976a7a3025993382434189855c2c6bf3a0 |
哈希值 用于 tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 006ac70cb240895963974c281732c08d37cfb2f53a22c2118402faea03bcc023 |
|
MD5 | 15a24e94b7a3632c44ac5e3b7ad67f24 |
|
BLAKE2b-256 | 6540523d2426a4ef59afb1b2d83697c497020864aefd1c0a400cc10752a2f169 |
哈希值 用于 tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp36-cp36m-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3713a2da2d4042e569e86e2e3bb25299bdc791eacdf0c688a9917e4333188db3 |
|
MD5 | a379586f9797784ea2136b1d201ad808 |
|
BLAKE2b-256 | e7d47e6c3494ae0dae20941536e8c010b35e6743344db83a91d3362717153bd8 |