我对keras并不陌生,需要深入学习。当创建一个样本基本模型时,我将其拟合,并且模型的对数损失始终相同。

model = Sequential()
model.add(Convolution2D(32, 3, 3, border_mode='same', init='he_normal',
                        input_shape=(color_type, img_rows, img_cols)))
model.add(MaxPooling2D(pool_size=(2, 2), dim_ordering="th"))
model.add(Dropout(0.5))
model.add(Convolution2D(64, 3, 3, border_mode='same', init='he_normal'))
model.add(MaxPooling2D(pool_size=(2, 2), dim_ordering="th")) #this part is wrong
model.add(Dropout(0.5))

model.add(Convolution2D(128, 3, 3, border_mode='same', init='he_normal'))
model.add(MaxPooling2D(pool_size=(2, 2), dim_ordering="th"))
model.add(Dropout(0.5))

model.add(Flatten())
model.add(Dense(10))
model.add(Activation('softmax'))

model.compile(Adam(lr=1e-3), loss='categorical_crossentropy')


model.fit(x_train, y_train, batch_size=64, nb_epoch=200,
               verbose=1, validation_data=(x_valid,y_valid))

训练17939个样本,验证4485个样本

时代1/200
17939/17939 [==============================]-8s-损失:99.8137-acc:0.3096-val_loss:99.9626- val_acc:0.0000e + 00

时代2/200
17939/17939 [==============================]-8s-损失:99.8135-acc:0.2864-val_loss:99.9626- val_acc:0.0000e + 00

时代3/200
17939/17939 [==============================]-8s-损失:99.8135-acc:0.3120-val_loss:99.9626- val_acc:1.0000

时代4/200
17939/17939 [==============================]-10s-损失:99.8135-acc:0.3315-val_loss:99.9626- val_acc:1.0000

时代5/200
17939/17939 [==============================]-10s-损失:99.8138-acc:0.3435-val_loss:99.9626- val_acc:0.4620

..

...

就像这样

你知道我做错了什么吗?

最佳答案

这种行为的一个原因可能是学习率太低。尝试通过使用Adam(lr=1e-2)Adam(lr=1e-1)来提高学习率。另外,请等待几个更多的迭代(时期),看看它是否有所改善。如果没有,您可以尝试减少辍学率。另外,如果您还没有输入数据,我建议对其进行标准化。

关于python - Keras log_loss错误是相同的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45639292/

10-12 23:09