TensorFlow Datasets 数据集载入

TensorFlow Datasets 数据集载入

https://tf.wiki/zh/appendix/tfds.html

我想请教下,map 这里如果不使用 lambda 表达式的话,直接使用 函数 ,需要怎么写函数?
def preprocess (……):
……
return ……

原文代码如下:

使用 TessorFlow Datasets 载入 “tf_flowers” 数据集

dataset = tfds.load (“tf_flowers”, split=tfds.Split.TRAIN, as_supervised=True)

对 dataset 进行大小调整、打散和分批次操作

dataset = dataset.map (lambda img, label: (tf.image.resize (img, [224, 224]) / 255.0, label))
.shuffle (1024)
.batch (32)

迭代数据

for images, labels in dataset:
# 对 images 和 labels 进行操作

可以参考 https://tf.wiki/zh_hans/basic/tools.html#id5 中的 rot90 函数。

你好!我尝试了这个代码,提示报错,不知是否是我的代码有问题?

代码如下:
import tensorflow as tf
import tensorflow_datasets as tfds
import matplotlib.pyplot as plt

mnist_dataset = tfds.load (“mnist”, split=tfds.Split.TRAIN)

def rot90 (image, label):
image = tf.image.rot90 (image)
return image, label

mnist_dataset = mnist_dataset.map (rot90)

for image, label in mnist_dataset:
plt.title (label.numpy ())
plt.imshow (image.numpy ()[:, :, 0])
plt.show ()

提示报错信息如下:
Traceback (most recent call last):
File “C:/Users/Administrator/Desktop/certification/Answer/tfds_test3.py”, line 13, in
mnist_dataset = mnist_dataset.map (rot90)
…………
TypeError: in converted code:

TypeError: tf__rot90 () missing 1 required positional argument: 'label'

我打印了一下这个 mnist_dataset,是单个完整的结构,我感觉是不是需要 转换 或者 提取 成某种 类似 (image, label) 的结构?
<_OptionsDataset shapes: {image: (28, 28, 1), label: ()}, types: {image: tf.uint8, label: tf.int64}>

我查询了 google 的关于这个数据集的文档,还是没有解决。

一个比较简单的方法是载入时直接加入 as_supervised=True 选项。

可以了, as_supervised=True 可以的,或者通过 Info 里的 Features 名称来索引到也可以。

请问下,有关于 Dataset 的数据增强的内容吗?

可以参考 Data augmentation  |  TensorFlow Core

请教下,比如 image = tf.image.random_brightness (image, max_delta=0.5) # Random brightness,这条语句,比如输入的 image 参数是 10 张图片(0 维的长度是 10),通过处理,输出的长度是多少?怎么设置数据增强的倍数?就是 哪个参数可以设定 把图片数量增强多少倍?