machine-learning - 为什么 keras 比 sklearn 慢很多?

标签 machine-learning scikit-learn keras logistic-regression

我正在处理一个简单的逻辑回归问题。每个样本包含 7423 个特征。总共4000个训练样本和1000个测试样本。 Sklearn 需要 0.01 秒来训练模型并达到 97% 的准确率,但 Keras(TensorFlow 后端)需要 10 秒才能在 50 个周期后达到相同的精度(即使一个周期也比 sklearn 慢 20 倍)。任何人都可以阐明这个巨大的差距吗?

示例:

    X_train: matrix of 4000*7423, 0.0 <= value <= 1.0
    y_train: matrix of 4000*1, value = 0.0 or 1.0

    X_test: matrix of 1000*7423, 0.0 <= value <= 1.0
    y_test: matrix of 1000*1, value = 0.0 or 1.0

Sklearn代码:

    from sklearn.linear_model.logistic import LogisticRegression
    from sklearn.metrics import accuracy_score

    classifier = LogisticRegression()

    **# Finished in 0.01s**
    classifier.fit(X_train, y_train)

    predictions = classifier.predict(X_test)
    print('test accuracy = %.2f' % accuracy_score(predictions, y_test))

    *[output]: test accuracy = 0.97*

Keras 代码:

    # Using TensorFlow as backend
    from keras.models import Sequential
    from keras.layers import Dense, Activation

    model = Sequential()
    model.add(Dense(1, input_dim=X_train.shape[1], activation='sigmoid'))
    model.compile(loss='binary_crossentropy',
                  optimizer='rmsprop',
                  metrics=['accuracy'])

    **# Finished in 10s**
    model.fit(X_train, y_train, batch_size=64, nb_epoch=50, verbose=0)

    result = model.evaluate(X_test, y_test, verbose=0)
    print('test accuracy = %.2f' % result[1])

    *[output]: test accuracy = 0.97*

最佳答案

可能是优化器或损失。您使用非线性。您还可能在 sklearn 中使用不同的批量大小。

但我的看法是,您有一个特定的任务,其中一个工具是为了解决它而定制的,另一个是一个更复杂的结构,可以解决它,但没有优化这样做,并且可能会这样做这个问题不需要很多东西,这会减慢一切。

关于machine-learning - 为什么 keras 比 sklearn 慢很多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42732881/

相关文章:

python - Tensorflow 2 坐标分类器

python - patsy 中未修改的列名索引

python - scikit-learn/python 中带有字符的随机森林

python - sklearn make_scorer 的输入形状错误 need_proba=True

python - 如何调整 BaggingClassifier 中 SVM 的参数

python - scikit_learn 中的 fit() 、fit_transform() 和 transform() 有什么区别?

tensorflow - LSTM 的精度非常低

python - 用Python挖掘海量数据集

python - sklearn Predict_proba 不匹配类标签

python - 将 tensorflow 导入 Keras skript 时出现 LinAlgError ("SVD did not converge")