keras中的输出维度不匹配

2024-04-20 00:37:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图训练我的cnn模型在一个图像数据集上,每幅图像的维数为200×200×3。 我的xu列的维数是(25290, 200, 200, 3),xu测试的维数是(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)

这里的活化是活化的最后一层model.add(Activation('softmax'))


Tags: 模型图像addsizemodeltrainactivationkernel
1条回答
网友
1楼 · 发布于 2024-04-20 00:37:41

正如在评论中提到的,这是因为网络输出的数字和yïtrain的形状不匹配。你需要一个热编码你的训练标签集。既然您已经在使用keras:

from keras.utils import to_categorical

y_train = to_categorical(y_train)

然后可以运行fit_generator方法

相关问题 更多 >