跳转到主要内容

TensorFlow IO

项目描述




TensorFlow I/O

GitHub CI PyPI License Documentation

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 Status
Linux CPU Python 3 Status
Linux GPU Python 2 Status
Linux GPU Python 3 Status

由于许多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

模拟器的参考资料

社区

更多信息

许可

Apache License 2.0

项目详情


发布历史 发布通知 | RSS订阅

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

此版本没有可用的源代码分发文件。请参阅生成分发存档的教程

构建分发

tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp39-cp39-win_amd64.whl (1.7 MB 查看哈希值)

上传日期 CPython 3.9 Windows x86-64

tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp38-cp38-win_amd64.whl (1.7 MB 查看哈希值)

上传时间 CPython 3.8 Windows x86-64

tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp37-cp37m-win_amd64.whl (1.7 MB 查看哈希值)

上传时间 CPython 3.7m Windows x86-64

tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp37-cp37m-macosx_10_14_x86_64.whl (1.9 MB 查看哈希值)

上传时间 CPython 3.7m macOS 10.14+ x86-64

tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp36-cp36m-win_amd64.whl (1.7 MB 查看哈希值)

上传时间 CPython 3.6m Windows x86-64

tensorflow_io_plugin_gs_nightly-0.18.0.dev20210513213318-cp36-cp36m-macosx_10_14_x86_64.whl (1.9 MB 查看哈希值)

上传时间 CPython 3.6m macOS 10.14+ x86-64

由以下组织支持