我根据官方TensorFlow教程使用数据增强。首先,我创建一个具有增强层的顺序模型:
def _getAugmentationFunction(self):
if not self.augmentation:
return None
pipeline = []
pipeline.append(layers.RandomFlip('horizontal_and_vertical'))
pipeline.append(layers.RandomRotation(30))
pipeline.append(layers.RandomTranslation(0.1, 0.1, fill_mode='nearest'))
pipeline.append(layers.RandomBrightness(0.1, value_range=(0.0, 1.0)))
model = Sequential(pipeline)
return lambda x, y: (model(x, training=True), y)
Run Code Online (Sandbox Code Playgroud)
然后,我在数据集上使用映射函数:
data_augmentation = self._getAugmentationFunction()
self.train_data = self.train_data.map(data_augmentation,
num_parallel_calls=AUTOTUNE)
Run Code Online (Sandbox Code Playgroud)
该代码按预期工作,但我收到以下警告:
WARNING:tensorflow:Using a while_loop for converting RngReadAndSkip
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting StatelessRandomUniformV2
WARNING:tensorflow:Using a while_loop for converting RngReadAndSkip
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for …Run Code Online (Sandbox Code Playgroud) 我使用此 API 从目录加载了一个数据集
val_ds = tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
validation_split=0.3,
subset="validation",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size)
Run Code Online (Sandbox Code Playgroud)
我想更改数据类型并使训练更快
我尝试过,但没有成功
for image_batch, labels_batch in train_ds:
image_batch = tf.cast(image_batch,tf.int16)
Run Code Online (Sandbox Code Playgroud)