使用scikeras.wrappers.KerasClassifier时遇ValueError:无法解析loss指标
解决scikeras.KerasClassifier接入sklearn Pipeline时的
ValueError: Could not interpret metric identifier: loss错误 问题现象
将scikeras.wrappers.KerasClassifier接入scikit-learn Pipeline后,模型训练轮次可正常执行,但训练结束后触发如下错误:
ValueError: Could not interpret metric identifier: loss
复现代码
from sklearn.model_selection import KFold, cross_val_score from sklearn.preprocessing import StandardScaler from scikeras.wrappers import KerasClassifier from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from sklearn.datasets import load_iris import numpy as np data = load_iris() X = data.data y = data.target def create_model(): model = Sequential() model.add(Dense(8, input_dim=4, activation='relu')) model.add(Dense(3, activation='softmax')) model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy']) return model clf = KerasClassifier(build_fn=create_model, epochs=100, batch_size=10, verbose=1) pipeline = Pipeline([ ('scaler', StandardScaler()), ('clf', clf) ]) kf = KFold(n_splits=5, shuffle=True, random_state=42) results = cross_val_score(pipeline, X, y, cv=kf) print("Cross-Validation Accuracy:", np.mean(results))
环境版本
- scikeras==0.12.0
- tensorflow==2.15.0
解决方案
将scikit-learn版本更换为1.4.1后,代码即可正常运行,该问题由scikit-learn版本不兼容导致。
内容的提问来源于stack exchange,提问作者Frederico Portela
相关产品推荐
相关产品推荐

