繁体   English   中英

keras中的输出尺寸不匹配

[英]Output Dimension mismatch in keras

我试图在图像数据集上训练我的cnn模型,每张图像的尺寸为200 x 200 x 3.我的x_train的尺寸为(25290, 200, 200, 3) 25290,200,200,3 (25290, 200, 200, 3) ,x_test具有尺寸(7026, 200, 200, 3). 7026,200,200 (7026, 200, 200, 3).

我已经尝试过使用fit_generator但错误仍然存​​在

这是我建立的模型

model = Sequential()
model.add(Conv2D(64, kernel_size=3, activation='relu', input_shape=(200,200,3)))
model.add(Conv2D(50, kernel_size=3, activation='relu'))
model.add(MaxPooling2D(pool_size=(1,2)))
model.add(Conv2D(25, kernel_size=6, activation='relu'))
model.add(MaxPooling2D(pool_size=(1,2)))
model.add(Conv2D(5, kernel_size=16, activation='relu'))
model.add(Flatten())
model.add(Dense(550))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Dense(250))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Dense(100))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.25))
#model.add(Flatten())
model.add(Dense(25))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit_generator(x_train, y_train,
           steps_per_epoch = int(ceil(float(len(x_train)//50))),
           epochs=1,
           verbose=1,
           validation_data=(x_val, y_val),callbacks=[monitor])

在运行模型时,我收到以下错误

Error when checking target: expected activation_31 to have 2 dimensions, 
but got array with shape (25290, 2, 2)

这里activation_31是激活模型的最后一层model.add(Activation('softmax'))

正如评论中所提到的,这是因为网络的数字输出与y_train的形状不匹配。 您需要对训练标签集进行单热编码。 既然你已经使用了keras:

from keras.utils import to_categorical

y_train = to_categorical(y_train)

然后,您可以运行fit_generator方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM