您好,我正在学习GANS和深度学习,总的来说,当我与NumPy图像数组一起工作时,但是对于本次作业,我通过以下方式获得了tfds的数据:
test_split, valid_split, train_split = tfds.Split.TRAIN.subsplit([10, 15, 75])
test_set_raw = tfds.load('cats_vs_dogs', split=test_split, as_supervised=True)
valid_set_raw = tfds.load('cats_vs_dogs', split=valid_split, as_supervised=True)
train_set_raw = tfds.load('cats_vs_dogs', split=train_split, as_supervised=True)
问题是我想使用其中的一些示例进行数据增强,但是我无法仅通过take()访问这些_OptionsDataset
上的每个图像,但是我想对此进行迭代,从而使每个图片并添加此新闻图片。
我可以使用NumPy和两个数组来执行此操作,但是我不知道如何使用_OptionsDataset
来执行此操作。
这可能吗?我该怎么办?是否可以将_OptionsDataset
转换为NumPy数组,然后再次将NumPy数组转换为_OptionsDataset?
谢谢
答案 0 :(得分:1)
tf.image
可以使用很多随机转换,您不需要Numpy。这是一个例子。由于我有另一个版本,因此必须对拆分进行一些不同的选择。这是tf.image
的{{3}}。
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import tensorflow as tf
import tensorflow_datasets as tfds
[train_set_raw] = tfds.load('cats_vs_dogs', split=['train[:100]'], as_supervised=True)
def augment(tensor):
tensor = tf.cast(x=tensor, dtype=tf.float32)
tensor = tf.image.rgb_to_grayscale(images=tensor)
tensor = tf.image.resize(images=tensor, size=(96, 96))
tensor = tf.divide(x=tensor, y=tf.constant(255.))
tensor = tf.image.random_flip_left_right(image=tensor)
tensor = tf.image.random_brightness(image=tensor, max_delta=2e-1)
tensor = tf.image.random_crop(value=tensor, size=(64, 64, 1))
return tensor
train_set_raw = train_set_raw.shuffle(128).map(lambda x, y: (augment(x), y)).batch(16)
import matplotlib.pyplot as plt
plt.imshow((next(iter(train_set_raw))[0][0][..., 0].numpy()*255).astype(int))
plt.show()