scikeras.wrappers.KerasClassifier 返回 ValueError:无法解释指标标识符:loss

问题描述 投票:0回答:1

我正在研究 KerasClassifier,因为我想将其插入 scikit-learn 管道中,但我收到了前面提到的 ValueError。

以下代码应该能够重现我遇到的错误:

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))

我的模型似乎是在纪元运行时编译的。但是,之后我收到错误:

ValueError: Could not interpret metric identifier: loss

tensorflow 和 scikeras 库的版本是:

scikeras==0.12.0
tensorflow==2.15.0
tensorflow machine-learning keras tf.keras scikeras
1个回答
0
投票

有相同的问题,包括相同的错误 atm,但使用 KerasRegressor。您找到解决方案了吗?

© www.soinside.com 2019 - 2024. All rights reserved.