You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KerasClassifier结合cross_val_score时出现loss指标识别错误求助

解决ValueError: Could not interpret metric identifier: loss问题

问题根源

你在初始化KerasClassifier时额外传入了loss='binary_crossentropy'参数,但SciKeras的KerasClassifier会将这个参数当作**评估指标(metric)**传递给Keras,而Keras 3无法识别字符串"loss"作为合法的metric标识符,导致报错。你的buildNetwork函数里已经在compile方法中指定了损失函数,不需要在KerasClassifier重复传入。

解决步骤

直接移除KerasClassifier初始化时的loss参数即可,修正后的代码如下:

def buildNetwork():
    classificator = Sequential()
    classificator.add(Dense(units = 20, activation='relu', kernel_initializer='random_uniform', input_shape=(30,)))
    classificator.add(Dense(units = 20, activation='relu', kernel_initializer='random_uniform'))
    classificator.add(Dense(units = 1, activation='sigmoid'))
    optimizer = keras.optimizers.Adam(learning_rate=0.001, weight_decay=0.000001)
    classificator.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['binary_accuracy'])
    return classificator


# 移除多余的loss参数
classifier = KerasClassifier(model=buildNetwork,batch_size=10,epochs=100)

score = cross_val_score(estimator=classifier, X=data, y=truth, cv=10, error_score='raise')

补充说明

  • 你的环境版本(Keras 3.0.8、TF 2.15.0、SciKeras 0.12.0)本身兼容性没问题,问题出在参数传递的逻辑误解上。
  • SciKeras的KerasClassifier会把除model、batch_size、epochs等特定参数外的其他参数,当作model.compile()的参数传递,但在处理损失函数时,它会错误地将其纳入metric的解析流程,导致Keras识别失败。

内容的提问来源于stack exchange,提问作者Zanchet2020

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 13:30:15