[英]How to fix the error when data augmenting TensorFlow training data?
I am trying to data augment my TensorFlow model's training data.我正在尝试数据增强我的 TensorFlow 模型的训练数据。 My model runs without data augmentation.
我的模型在没有数据增强的情况下运行。 I want to augment training data to improve results.
我想增加训练数据以改善结果。 This is my attempt:
这是我的尝试:
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
directory_testData,
#validation_split=0.2,
target_size=(150, 150),
batch_size=32,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
directory_testData,
#validation_split=0.2,
target_size=(150, 150),
batch_size=32,
class_mode='binary')
model = create_functionalModel()
model.fit(
train_generator,
steps_per_epoch=2000,
epochs=50,
validation_data=validation_generator,
validation_steps=800)
I then ran it and am getting these errors:然后我运行它并收到这些错误:
Model: "model_4"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_5 (InputLayer) [(None, 180, 180, 3)] 0
rescaling_5 (Rescaling) (None, 180, 180, 3) 0
conv2d_12 (Conv2D) (None, 180, 180, 16) 448
max_pooling2d_12 (MaxPoolin (None, 90, 90, 16) 0
g2D)
conv2d_13 (Conv2D) (None, 90, 90, 32) 4640
max_pooling2d_13 (MaxPoolin (None, 45, 45, 32) 0
g2D)
conv2d_14 (Conv2D) (None, 45, 45, 64) 18496
max_pooling2d_14 (MaxPoolin (None, 22, 22, 64) 0
g2D)
flatten_4 (Flatten) (None, 30976) 0
dense_8 (Dense) (None, 128) 3965056
dense_9 (Dense) (None, 3) 387
=================================================================
Total params: 3,989,027
Trainable params: 3,989,027
Non-trainable params: 0
_________________________________________________________________
None
Epoch 1/50
---------------------------------------------------------------------------
InvalidArgumentError Traceback (most recent call last)
<ipython-input-25-1c89b4a3fc84> in <module>()
30 epochs=50,
31 validation_data=validation_generator,
---> 32 validation_steps=800)
1 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
57 ctx.ensure_initialized()
58 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
---> 59 inputs, attrs, num_outputs)
60 except core._NotOkStatusException as e:
61 if name is not None:
InvalidArgumentError: Input to reshape is a tensor with 663552 values, but the requested shape requires a multiple of 30976
[[node model_4/flatten_4/Reshape
(defined at /usr/local/lib/python3.7/dist-packages/keras/layers/core/flatten.py:96)
]] [Op:__inference_train_function_4555]
It seems that this issue is related to the input shapes required by my model.这个问题似乎与我的模型所需的输入形状有关。 Can you please help me understand how to resolve this issue?
你能帮我理解如何解决这个问题吗? Thank you.
谢谢你。
EDIT:编辑:
From tensorflow.keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
directory_testData,
#validation_split=0.2,
target_size=(180, 180),
batch_size=32,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
directory_testData,
#validation_split=0.2,
target_size=(180, 180),
batch_size=32,
class_mode='binary')
model = create_functionalModel()
model.fit(
train_generator,
steps_per_epoch=30,
epochs=50,
validation_data=validation_generator,
validation_steps=800)
Your model requires an input of shape (180, 180) But you are resizing your images to (150, 150).您的模型需要输入形状 (180, 180) 但是您正在将图像大小调整为 (150, 150)。
Changing:改变:
target_size=(150, 150),
To:到:
target_size=(180, 180),
Should fix it.应该修复它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.