AttributeError: 'KerasClassifier'无'add'属性 网格搜索报错求解
报错根因
你定义的create_model函数内缺少初始化序列模型对象的步骤,直接调用了model.add()方法:
- 函数执行时,作用域内不存在名为
model的局部变量,会向上查找全局作用域的model,也就是你实例化的KerasClassifier对象 KerasClassifier是Scikit-learn的适配包装类,本身没有add方法,因此触发属性错误
修复方案
- 首先修改
create_model函数,新增Sequential实例化步骤:
#Create the model def create_model(neurons=1): # 新增:实例化Keras序列模型 model = Sequential() # add 1st layer with 50 nodes/perceptons, each will process (2,6) matrix block model.add(LSTM(neurons, input_shape=(2, 6), return_sequences=True)) model.add(Dropout(0.2)) model.add(LSTM(50, return_sequences=False)) model.add(Dropout(0.2)) model.add(Dense(6)) #Compile model model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy']) return model
- 可选适配优化:
你当前用的损失函数是mean_squared_error,输出维度为6,如果是回归任务,建议把KerasClassifier替换为KerasRegressor更合理:
from keras.wrappers.scikit_learn import KerasRegressor model = KerasRegressor(build_fn=create_model, epochs=100, batch_size=10, verbose=0)
如果是高版本TensorFlow环境,导入路径调整为:
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier # 回归任务用下面的导入 from tensorflow.keras.wrappers.scikit_learn import KerasRegressor
内容的提问来源于stack exchange,提问作者user979974
相关产品推荐
相关产品推荐

