为了使用Google Colabs TPUs我需要一个
更具体地说,我的代码如下:
这会被输入到这个中:
那么,我怎样才能在这里使用数据增强呢?据我所知,我不能使用tf.keras ImageDataGenerator,对吗? 我尝试了以下方法,但没有成功。
tf.dataset.Dataset
。那么如何在这样的数据集上使用数据增强呢?更具体地说,我的代码如下:
def get_dataset(batch_size=200):
datasets, info = tfds.load(name='mnist', with_info=True, as_supervised=True,
try_gcs=True)
mnist_train, mnist_test = datasets['train'], datasets['test']
def scale(image, label):
image = tf.cast(image, tf.float32)
image /= 255.0
label = tf.one_hot(label,10)
return image, label
train_dataset = mnist_train.map(scale).shuffle(10000).batch(batch_size)
test_dataset = mnist_test.map(scale).batch(batch_size)
return train_dataset, test_dataset
这会被输入到这个中:
# TPU Strategy ...
with strategy.scope():
model = create_model()
model.compile(loss="categorical_crossentropy",
optimizer="adam",
metrics=["acc"])
train_dataset, test_dataset = get_dataset()
model.fit(train_dataset,
epochs=20,
verbose=1,
validation_data=test_dataset)
那么,我怎样才能在这里使用数据增强呢?据我所知,我不能使用tf.keras ImageDataGenerator,对吗? 我尝试了以下方法,但没有成功。
data_generator = ...
model.fit_generator(data_generator.flow(train_dataset, batch_size=32),
steps_per_epoch=len(train_dataset) / 32, epochs=20)
通常情况下,train_x
和 train_y
会被作为两个参数传递给 flow
函数,而不是"打包"成一个tf.dataset.Dataset
对象。
repeat
,然后再使用map
呢?这样,我们可以获得两倍大小的不同数据集,而不是相同数据重复两次。 - C.K.