Error when checking model input: expected convolution2d_input_1 to have 4 dimensions, but got array with shape (32, 32, 3)

后端 未结 9 1586
南笙
南笙 2020-12-08 01:28

I want to train a deep network starting with the following layer:

model = Sequential()
model.add(Conv2D(32, 3, 3, input_shape=(32, 32, 3)))

相关标签:
9条回答
  • 2020-12-08 02:25
    x_train = x_train.reshape(-1,28, 28, 1)   #Reshape for CNN -  should work!!
    x_test = x_test.reshape(-1,28, 28, 1)
    history_cnn = cnn.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test))
    

    Output:

    Train on 60000 samples, validate on 10000 samples Epoch 1/5 60000/60000 [==============================] - 157s 3ms/step - loss: 0.0981 - acc: 0.9692 - val_loss: 0.0468 - val_acc: 0.9861 Epoch 2/5 60000/60000 [==============================] - 157s 3ms/step - loss: 0.0352 - acc: 0.9892 - val_loss: 0.0408 - val_acc: 0.9879 Epoch 3/5 60000/60000 [==============================] - 159s 3ms/step - loss: 0.0242 - acc: 0.9924 - val_loss: 0.0291 - val_acc: 0.9913 Epoch 4/5 60000/60000 [==============================] - 165s 3ms/step - loss: 0.0181 - acc: 0.9945 - val_loss: 0.0361 - val_acc: 0.9888 Epoch 5/5 60000/60000 [==============================] - 168s 3ms/step - loss: 0.0142 - acc: 0.9958 - val_loss: 0.0354 - val_acc: 0.9906

    0 讨论(0)
  • 2020-12-08 02:28

    yes, it accepts the tuple of four arguments, if you have Number of training Images(or whatever)=6000, image size=28x28 and a grayscale image you'll have parameters as (6000,28,28,1)

    the last argument is 1 for greyscale and 3 for color images.

    0 讨论(0)
  • 2020-12-08 02:32

    You should simply apply the following transformation to your input data array.

    input_data = input_data.reshape((-1, image_side1, image_side2, channels))
    
    0 讨论(0)
提交回复
热议问题