从SKLearn到Keras - 有什么区别?

时间:2017-06-21 14:29:04

标签: keras

我正试图从 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更好,但到目前为止表现优于目前? 我的错误是什么?

谢谢,

0 个答案:

没有答案