【问题标题】:Is it possible to apply sklearn pipeline for deep learning neural network?是否可以将 sklearn 管道应用于深度学习神经网络?
【发布时间】:2023-01-28 06:06:55
【问题描述】:

像这样,

clf = Pipeline(
    steps=[("preprocessor", preprocessor), ("classifier", LogisticRegression())]
)

clf.fit(X_train, y_train)

有可能吗?如果是那么怎么办?

def model():
    ann = tf.keras.models.Sequential()
    ann.add(tf.keras.layers.Dense(units=6, activation='relu'))
    ann.add(tf.keras.layers.Dense(units=6, activation='relu'))
    ann.add(tf.keras.layers.Dense(units=1, activation='sigmoid'))
    ann.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
    return ann

clf = Pipeline(
    steps = [
             ('pre', preprocessor),
             ('ann', model())
    ]
)

clf.fit(X_train, y_train, batch_size = 32, epochs = 100)

显示此错误。

ValueError:Pipeline.fit 不接受 batch_size 参数。您可以使用 stepname__parameter 格式将参数传递给管道的特定步骤,例如Pipeline.fit(X, y, logisticregression__sample_weight=sample_weight)

【问题讨论】:

  • 你想要this还是this_2
  • 我的意思是错误非常明确地说明了要做什么,使用ann__batch_sizeann__epochs
  • 是的,您可以在深度学习中使用 sklearn 管道。但是您可能需要使用来自 scikeras.wrappers 的 KerasClassifier 来实现它。请检查这些链接 - link1link2 作为类似问题的参考。

标签: python machine-learning deep-learning neural-network tf.keras


【解决方案1】:

要从管道中的命名步骤访问参数,您必须使用<step_name>__<parameter_name>。例如,在您的情况下,您必须使用 ann__batch_sizeann__epochs 在使用拟合时设置值。希望能澄清一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-15
    • 2018-10-05
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 2014-06-25
    相关资源
    最近更新 更多