我正在尝试在尺寸为200 x 200 x 3的每个图像的图像数据集上训练我的cnn模型。
我的x_train的尺寸为(25290, 200, 200, 3)
,x_test的尺寸为(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'))
的最后一层
答案 0 :(得分:0)
如评论中所述,这是因为网络输出的数字与y_train的形状不匹配。您需要对训练标签集进行一次热编码。由于您已经在使用keras:
if ($("#pilihan option:selected").val() == 'A') {
$('#satu').prop('hidden', 'true');
$('#dua').prop('hidden', 'true');
} else {
$('#satu').prop('hidden', false);
$('#dua').prop('hidden', false);
}
});
然后您可以运行function validateForm() {
var x = document.forms["myForm"]["opsiselect"].value;
var y = document.forms["myForm"]["A"].value;
if (x != "A" && y == "") {
alert("Data Belum di isi");
return false;
} else {
alert("berhasil");
return true;
}
方法。