python - Keras 中的 2D 卷积错误

标签 python machine-learning neural-network deep-learning keras

我知道此类问题已在这里被问过很多次,但我无法从这些问题中找出答案。我有一张 100x100 的灰度图像。尝试在第一层执行 2D 卷积时出现以下错误。

    import theano
    from keras.layers import Activation, Flatten, Dense
    from keras.layers import Convolution2D,MaxPooling2D
    from keras.models import Sequential

    nb_epoch = 40
    batch_size = 32
    nb_classes = 2
    model = Sequential()
    model.add(Convolution2D(32,3,3,border_mode = 'valid',subsample = (1,1),init = 'glorot_uniform',input_shape = (1,100,100)))
    model.add(Activation('relu'))

    train_datagen = ImageDataGenerator(
    rescale=1./255,
    rotation_range = 300,
    horizontal_flip=True,
    vertical_flip = True)

    test_datagen = ImageDataGenerator(rescale=1./255)

    train_generator = train_datagen.flow_from_directory(
    train_data_dir,
    target_size=(img_width, img_height),
    batch_size=16,
    class_mode='binary')

    validation_generator = test_datagen.flow_from_directory(
    test_data_dir,
    target_size=(img_width, img_height),
    batch_size=16,
    class_mode='binary')

    model.fit_generator(
    train_generator,
    samples_per_epoch=nb_train_samples,
    nb_epoch=nb_epoch,
    validation_data=validation_generator,
    nb_val_samples=nb_validation_samples) 

我收到这样的错误:检查模型输入时出错:预期 volution2d_input_1 的形状为 (None, 1, 100, 100),但得到的数组形状为 (32, 3, 100, 100)。我不确定我哪里出错了。

最佳答案

尝试:

 train_generator = train_datagen.flow_from_directory(
    train_data_dir,
    target_size=(img_width, img_height),
    batch_size=16,
    color_mode='grayscale',
    class_mode='binary')

    validation_generator = test_datagen.flow_from_directory(
    test_data_dir,
    target_size=(img_width, img_height),
    batch_size=16,
    color_mode='grayscale
    class_mode='binary')

关于python - Keras 中的 2D 卷积错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42437662/

相关文章:

python - 计算 pytorch 中分类的交叉熵损失

python - ValueError : non-broadcastable output operand with shape (3, 1) 与广播形状 (3,4) 不匹配

python - Socket.py权限错误

python - 如果第一个条目为零,则仅删除它们

tensorflow - 在恢复的对象: (root). Optimizer.iter中找不到检查点中的值

python - 如何将函数(BigramCollocationFinder)应用于 Pandas DataFrame

python - 对 NumPy 数组的一行求和

python - 如何使用 Pygame 创建 "play again"选项

machine-learning - 梯度下降似乎失败了

python - Keras model.summary() 结果 - 了解参数的数量