【问题标题】:AttributeError: 'Sequential' object has no attribute 'classes_'AttributeError:“顺序”对象没有属性“类_”
【发布时间】:2020-01-29 21:58:51
【问题描述】:

我正在尝试校准在 keras 中训练了 883 个类的模型。

# Define model architecture
model = Sequential()
model.add(Dense(512,input_shape=(3,),activation="relu"))
model.add(BatchNormalization())
model.add(Dense(512,activation="relu"))
model.add(BatchNormalization())
model.add(Dense(883,activation="relu"))
model.add(Dense(883,activation="softmax"))
model = load_model("my_model.h5")
calib = CalibratedClassifierCV(model,method="sigmoid",cv="prefit")
calib.fit(X_train,y_train)

我得到了错误

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/calibration.py", line 163, in fit
    calibrated_classifier.fit(X, y)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/calibration.py", line 345, in fit
    df, idx_pos_class = self._preproc(X)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/calibration.py", line 312, in _preproc
    transform(self.base_estimator.classes_)
AttributeError: 'Sequential' object has no attribute 'classes_'

model.classes_ 似乎不存在,那我做错了什么?

model.classes_
Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'Sequential' object has no attribute 'classes_'

任何帮助将不胜感激,谢谢

【问题讨论】:

  • 既然你有 883 个类,为什么还要最后一层大小为 1000 的密集层?
  • 你不能像这样将 keras 模型传递给 scikit-learn
  • @desertnaut 抱歉打错了,我已经更新了代码
  • @MatiasValdenegro 请您详细说明一下吗?你会建议我做什么?

标签: python-2.7 keras scikit-learn


【解决方案1】:

您必须使用 Scikit-learn 包装器。像这样的:

from keras.wrappers.scikit_learn import KerasClassifier

def get_model():
    return load_model("my_model.h5")

model = KerasClassifier(build_fn = get_model, epochs=1, batch_size =10)
cv_model = CalibratedClassifierCV(model, method="sigmoid",cv="prefit")

https://keras.io/scikit-learn-api/

https://keras.io/examples/mnist_sklearn_wrapper/

【讨论】:

  • 之后,我尝试cv_model.fit(X_train,y_train),我得到AttributeError: 'KerasClassifier' object has no attribute 'model'
  • 在校准分类器之前通过安装 KerasClassifier 来解决这个问题
猜你喜欢
  • 2022-01-04
  • 2021-10-23
  • 2020-01-03
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多