簡體   English   中英

數據增強 TensorFlow 訓練數據時如何修復錯誤?

[英]How to fix the error when data augmenting TensorFlow training data?

我正在嘗試數據增強我的 TensorFlow 模型的訓練數據。 我的模型在沒有數據增強的情況下運行。 我想增加訓練數據以改善結果。 這是我的嘗試:

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)

然后我運行它並收到這些錯誤:

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]

這個問題似乎與我的模型所需的輸入形狀有關。 你能幫我理解如何解決這個問題嗎? 謝謝你。

編輯:

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)

您的模型需要輸入形狀 (180, 180) 但是您正在將圖像大小調整為 (150, 150)。

改變:

target_size=(150, 150),

到:

target_size=(180, 180),

應該修復它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM