【问题标题】:Keras fit_generator incorrect input shapesKeras fit_generator 输入形状不正确
【发布时间】:2019-11-22 23:39:37
【问题描述】:

我正在使用 ImageDataGenerator 将批量图像输入到神经网络,但无法找到正确的输入方式。运行以下命令:

train_datagen = ImageDataGenerator(rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
training_set = train_datagen.flow_from_directory('/home/Training', target_size=(256,256), batch_size=32, class_mode='binary', color_mode = 'grayscale')

test_set = test_datagen.flow_from_directory('/home/Test', target_size=(256,256), batch_size=32, class_mode='binary',color_mode = 'grayscale' )


input_size = (256, 256, 1)
inputs = Input(input_size)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(inputs)
conv2 = Conv2D(2, 3, activation = 'relu', padding = 'same', kernel_initializer = 'he_normal')(conv1)
conv3 = Conv2D(1, 1, activation = 'sigmoid')(conv2)
model1 = Model(inputs = inputs, outputs = conv3)

model1.compile(optimizer = Adam(lr = 1e-4), loss = 'binary_crossentropy', metrics = ['accuracy'])

model1.fit_generator(training_set, steps_per_epoch=160, epochs=10, validation_data=test_set, validation_steps=800)   

结果:

检查目标时出错:预期 conv2d_198 有 4 个维度, 但是得到了形状为 (14, 1) 的数组

似乎使用批次作为输入张量,因为删除除了输入层之外的所有层会导致类似的错误。如何正确输入到网络中?

【问题讨论】:

    标签: machine-learning keras tf.keras keras-2


    【解决方案1】:

    基本上,Keras 期望您传递输入的维度和行。看起来您正在传递一个二维数组。你能确保你传递的是 (-1, dimension 1, dimension 2, channels) 之类的东西吗?您可能需要使用重塑。 -1 应该告诉 Keras 推断行/观察值。我对 Keras 很陌生,所以我相信其他人会有更好的答案,但你也许可以这样做.. myinputarray.reshape()

    【讨论】:

      猜你喜欢
      • 2020-09-04
      • 2019-01-29
      • 2020-01-12
      • 2017-11-17
      • 1970-01-01
      • 2020-11-27
      • 2018-06-10
      • 2017-07-03
      • 2018-02-16
      相关资源
      最近更新 更多