我已经为 CNN 训练了一个模型,并且在密集层上出现了错误。
型号代码:
def model(input_img):
conv1 = Conv2D(5, (3, 3), padding='same')(input_img) #28 x 28 x 32
conv1 = BatchNormalization()(conv1)
pool1 = MaxPooling2D(pool_size=(2, 2))(conv1) #14 x 14 x 32
relu1 = Activation('relu')(pool1)
drop1 = Dropout(rate = 0.5)(relu1)
conv2 = Conv2D(5, (3, 3), padding='same')(pool1) #14 x 14 x 64
conv2 = BatchNormalization()(conv2)
pool2 = MaxPooling2D(pool_size=(2, 2))(conv2) #7 x 7 x 64
relu2 = Activation('relu')(pool2)
drop2 = Dropout(rate=0.5)(relu2)
dense = Dense(2, activation='softmax')(drop2) # 28 x 28 x 1
return dense
型号总结:
Layer (type) Output Shape Param #
=================================================================
input_2 (InputLayer) (None, 242, 242, 1) 0
_________________________________________________________________
conv2d_4 (Conv2D) (None, 242, 242, 5) 50
_________________________________________________________________
batch_normalization_4 (Batch (None, 242, 242, 5) 20
_________________________________________________________________
max_pooling2d_4 (MaxPooling2 (None, 121, 121, 5) 0
_________________________________________________________________
conv2d_5 (Conv2D) (None, 121, 121, 5) 230
_________________________________________________________________
batch_normalization_5 (Batch (None, 121, 121, 5) 20
_________________________________________________________________
max_pooling2d_5 (MaxPooling2 (None, 60, 60, 5) 0
_________________________________________________________________
activation_4 (Activation) (None, 60, 60, 5) 0
_________________________________________________________________
dropout_4 (Dropout) (None, 60, 60, 5) 0
_________________________________________________________________
dense_1 (Dense) (None, 60, 60, 2) 12
=================================================================
Total params: 332
Trainable params: 312
Non-trainable params: 20
但是当我试图训练模型时
model_train = model.fit(train_X, train_ground, batch_size=batch_size,epochs=epochs,verbose=1,validation_data=(valid_X, valid_ground))
我收到以下错误
ValueError Traceback (most recent call last)
<ipython-input-51-0fec3a3d04b9> in <module>()
----> 1 model_train = model.fit(train_X, train_ground,
batch_size=batch_size,epochs=epochs,verbose=1,validation_data=(valid_X,
valid_ground))
2 frames
/usr/local/lib/python3.6/dist-packages/keras/engine/training.py in fit(self,
x, y, batch_size, epochs, verbose, callbacks, validation_split,
validation_data, shuffle, class_weight, sample_weight, initial_epoch,
steps_per_epoch, validation_steps, **kwargs)
950 sample_weight=sample_weight,
951 class_weight=class_weight,
--> 952 batch_size=batch_size)
953 # Prepare validation data.
954 do_validation = False
/ usr/local/lib/python3.6/dist-packages/keras/engine/training.py in
_standardize_user_data(self, x, y, sample_weight, class_weight,
check_array_lengths, batch_size)
787 feed_output_shapes,
788 check_batch_axis=False, # Don't enforce the batch size.
--> 789 exception_prefix='target')
790
791 # Generate sample-wise weight values given the
`sample_weight` and
/usr/local/lib/python3.6/dist-packages/keras/engine/training_utils.py in
standardize_input_data(data, names, shapes, check_batch_axis,
exception_prefix)
126 ': expected ' + names[i] + ' to have ' +
127 str(len(shape)) + ' dimensions, but got array '
--> 128 'with shape ' + str(data_shape))
129 if not check_batch_axis:
130 data_shape = data_shape[1:]
ValueError: Error when checking target: expected dense_1 to have 4
dimensions, but got array with shape (3456, 1)
任何帮助将不胜感激。
谢谢