我正试图从 SKLearn 转到 Keras ,以便对我的模型进行具体改进。 但是,我无法获得与 SKLearn 模型相同的性能:
mlp = MLPClassifier(
solver='adam', activation='relu',
beta_1=0.9, beta_2=0.999, learning_rate='constant',
alpha=0, hidden_layer_sizes=(238,),
max_iter=300
)
dev_score(mlp)
每次得分〜0.65
以下是我对应的 Keras 代码:
def build_model(alpha):
level_moreargs = {'kernel_regularizer':l2(alpha), 'kernel_initializer': 'glorot_uniform'}
model = Sequential()
model.add(Dense(units=238, input_dim=X.shape[1], **level_moreargs))
model.add(Activation('relu'))
model.add(Dense(units=class_names.shape[0], **level_moreargs)) # output
model.add(Activation('softmax'))
model.compile(loss=keras.losses.categorical_crossentropy, # like sklearn
optimizer=keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0),
metrics=['accuracy'])
return model
k_dnn = KerasClassifier(build_fn=build_model, epochs=300, batch_size=200, validation_data=None, shuffle=True, alpha=0.5, verbose=0)
dev_score(k_dnn)
从查看文档(并深入研究SKLearn代码),这应该完全符合相同的事情。
但是,当我运行此模型时,我得到的精确度为0.5,非常糟糕。
如果我将alpha设置为0,则SKLearn的得分几乎没有变化(0.63),而Keras则从0.2变为0.4。
这些型号有什么区别?为什么Keras虽然应该比SKLearn更好,但到目前为止表现优于目前? 我的错误是什么??
谢谢,