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 数据集,因此我们可以将压缩文件的 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.31.0 | 2.11.x | 2022年2月25日 |
0.30.0 | 2.11.x | 2022年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是一个由社区主导的开源项目。因此,该项目依赖于公共贡献、错误修复和文档。请参阅
构建状态和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软件包,则必须将此版本的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 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模拟器,用于云PubSub。
- Azure官方Azurite模拟器,用于Azure存储。
- 非官方的LocalStack 模拟器,由 LocalStack 为 AWS Kinesis 提供。
社区
- SIG IO 谷歌群组 和邮件列表:io@tensorflow.org
- SIG IO 每月会议纪要
- 聊天室:tensorflow/sig-io
更多信息
- 具有分层存储和无数据湖的流式机器学习 - Kai Waehner
- TensorFlow with Apache Arrow Datasets - Bryan Cutler
- 如何为 TensorFlow 构建 custom Dataset - Ivelin Ivanov
- TensorFlow on Apache Ignite - Anton Dmitriev
许可协议
项目详情
tensorflow_io_nightly-0.31.0.dev20230309180344-cp311-cp311-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 83d94fcfd72937d74b98fb6c7903acf93b945a59e8b66333cf1362c6500a1d37 |
|
MD5 | 69c50903a021bca062a1763fccac7f3a |
|
BLAKE2b-256 | c59d0d5a32e8b944b9cc6230ae638a3aee9c992571d55b78c63f0485f1dd344b |
tensorflow_io_nightly-0.31.0.dev20230309180344-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 42b6c41ec5701f80dc2ae0dae898b66d4ecdecda7e94e89071b3360bb75b221c |
|
MD5 | a853d9abc0aacabfaf978507da935c3d |
|
BLAKE2b-256 | 47506bd3617c0b7c1dfe84bbf9298fa96d4f36e97403d637bf1b0f3b57ca74ea |
tensorflow_io_nightly-0.31.0.dev20230309180344-cp311-cp311-macosx_10_14_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2956f26d41f4530aeb5ebab845513e936bb3afb1fd2a7cdf28c08a00778517ff |
|
MD5 | 7dae459e6d5578d7fd2bd0e64c5d9fa1 |
|
BLAKE2b-256 | e1c45da3a2205ed662204a127458d9f14ce3ed18f0ac0bbe0187033fe0c82c65 |
哈希值 for tensorflow_io_nightly-0.31.0.dev20230309180344-cp310-cp310-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f70efeafc97bf064d2d7d2e1259d5579b1fb3e46778be7305e1413273689e082 |
|
MD5 | 8eae5eab2174799c7277cc885890a55e |
|
BLAKE2b-256 | 8ad146e955fb6c8b403dbca3f190dd37a5480643695868d71e32314a97fffe32 |
哈希值 for tensorflow_io_nightly-0.31.0.dev20230309180344-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 21c953af839d4205526040fb3392febfe541d91facf92985601fc549a188f5c4 |
|
MD5 | dc203f39894d939f9d9af29435163931 |
|
BLAKE2b-256 | 67e72bc2957550b93fb96302f1531e1fb9229e96d8039ca58255f081a163ef83 |
哈希值 for tensorflow_io_nightly-0.31.0.dev20230309180344-cp310-cp310-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ca4bfe4f4cd93a04c7171e05a727f21354307d89e2c0ca21c55003c350d70409 |
|
MD5 | 5e35ac4ff9ae14ac5b59197ce45be6d7 |
|
BLAKE2b-256 | 1f52cafbfca127e089236d0c954e0ec7fed6360e3b7470dbcee7cf04c0b0fc76 |
哈希值 for tensorflow_io_nightly-0.31.0.dev20230309180344-cp39-cp39-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 31f827f1c6923a0b4e8d05d5ff2ba07cd0fb29e211e3dcc7ac336fbf577270f2 |
|
MD5 | b5fb77066e2c64f6b8af848e9f4f24f1 |
|
BLAKE2b-256 | dbb37d971c1797e75a4083134ed387e75078525c1ee81bfdc50122e899fcdf66 |
哈希值 for tensorflow_io_nightly-0.31.0.dev20230309180344-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8eabb8afd65967cd894ce84cc47d17f230c519e46f4962f6f272683c7cca1725 |
|
MD5 | c70e87cc17a6008df5dff47301078c38 |
|
BLAKE2b-256 | 0b692babd976a9a967da1804e3925982a12450af3d5117dd3dd92ba6b5069314 |
哈希值 for tensorflow_io_nightly-0.31.0.dev20230309180344-cp39-cp39-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6cd7c47c6939854b527ef09edb206347531dbbc97a3ce09c8de2363a2a1e4b40 |
|
MD5 | 692dddd1d458cffdfff637955c71d7d2 |
|
BLAKE2b-256 | f4f46082e2c27b701fdb3f8ec7065ab1826eea4739872ac872168aaa5569486d |
哈希值 for tensorflow_io_nightly-0.31.0.dev20230309180344-cp38-cp38-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 253bb9196d6a16176cf02f612eb97ac0afb4338386ea6c80354ec5610654eaa1 |
|
MD5 | ed806e5d59416c65a7e064ddaca4977e |
|
BLAKE2b-256 | 325ba716b4c86df0090fecafcabe117d9cb45737bc2bb085ff2a9b92e5bcf327 |
哈希值 for tensorflow_io_nightly-0.31.0.dev20230309180344-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c75b0a4c3bbde8cf1664e8ffbc3b51f073808c49c1b6c3667dc2309c7fbc50a7 |
|
MD5 | ba516b8869fff58d17c9200554836be4 |
|
BLAKE2b-256 | 6f259f2a980b1530e016de16c34e33d8fccf66258314927d9574f586bd7aa35c |
哈希值 for tensorflow_io_nightly-0.31.0.dev20230309180344-cp38-cp38-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1b36457dbd2567e16b97164332d141f64f5c22e67ab951755e6a26c88b1834db |
|
MD5 | 4c20d3ac60de8d82d8b961cbcd2ae75d |
|
BLAKE2b-256 | 00f6eeca6273a529a8c775569e6175765ca55aa42acff318c791d4dd61908bbd |
哈希值 for tensorflow_io_nightly-0.31.0.dev20230309180344-cp37-cp37m-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9aa8c381a7187570afdbbd06773be34ab80685f4790d7ac462cb912133e8d711 |
|
MD5 | 94449b49119f39cdbeef83093c42da39 |
|
BLAKE2b-256 | 94cf83ef234af081a30bb633d4c9a42d473d11c9980ac212e50a03c1724b876c |
哈希值 for tensorflow_io_nightly-0.31.0.dev20230309180344-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 04b126b356e3d5c40844d0de21f8545a4c98afa269c5bf7bac908715cc47b6fe |
|
MD5 | 27554fae7d63f4a566e36d161c963837 |
|
BLAKE2b-256 | 993a3d5cb8451da32d4b0b04152756532a228e5cbf2a8d0cd057932e2fd238aa |
哈希值 for tensorflow_io_nightly-0.31.0.dev20230309180344-cp37-cp37m-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1232063883025bdb3c5c86345d228c766d24da4719f59c84e3f1096ef68880f5 |
|
MD5 | 44d89eafdc8531187f2a0754fb8bda2d |
|
BLAKE2b-256 | dcfa4a9b7021283995496ee128cd6b4819bb305b5064c1a579d3a115cf30f19e |