大家好,有人知道为什么会出现这个错误吗?这是错误信息:
ValueError: Error when checking model target: expected dense_4 to have shape (None, 4) but got array with shape (13252, 1)
这是代码:
from keras.models import Sequentialfrom keras.layers import *model = Sequential()model.add(Cropping2D(cropping=((0,0), (50,20)), input_shape=(160 ,320, 3))) #(None, 90, 320, 3)model.add(Lambda(lambda x: x/127.5 - 1.)) model.add(Convolution2D(32, 3, 3,)) #(None, 88, 318, 32)model.add(Activation('relu'))model.add(Convolution2D(32, 3, 3)) #(None, 86, 316, 32)model.add(Activation('relu'))model.add(Flatten()) #(None, 869632)model.add(Dense(128)) #(None, 128)model.add(Activation('relu'))model.add(Dense(4)) #(None, 4)print(model.summary())model.compile(loss='mse', optimizer='adam')model.fit(X, y, validation_split=0.2, batch_size=32, nb_epoch=3, verbose=1)
输入形状(X)为:
(13252, 160, 320, 3)
输出形状(y)为:
(13252,)
回答:
由于你的网络有四个输出,你的y必须是N x 4的矩阵,而不是长度为N的向量。你可以更改y,或者将最后一层改为Dense(1)