属性错误: 'History'对象没有'predict'属性 - 拟合一个训练集和测试集数据列表

4

我正在尝试使用示例来构建一个神经网络模型。我正在将一系列数值拟合到神经网络模型中,但是出现了AttributeError错误。这个问题之前已经被问过并得到了解答,但是对我来说不起作用。如示例所示,我创建了以下内容:

from keras.models import Sequential
from keras.wrappers.scikit_learn import KerasRegressor
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from keras.layers import Dense

def neuralnetmodel():
    #Crete model
    model = Sequential()
    model.add(Dense(13, input_dim = 13, kernel_initializer = 'normal', activation = 'relu'))

model.add(Dense(1, kernel_initializer = 'normal', activation = 'relu'))
model.add(Dense(1, kernel_initializer = 'normal', activation = 'relu'))
## Output layer
model.add(Dense(1, kernel_initializer = 'normal'))

#Compile model
model.compile(loss = 'mean_squared_error', optimizer = 'adam')
return model

fit训练数据,

NNmodelList = []

for i,j in zip(X_train_scaled,y_train): 
    nn_model = KerasRegressor(build_fn= neuralnetmodel, nb_epoch = 50, batch_size = 10, verbose = 0)
    NNmodelList.append(nn_model.fit(i,j))

predict从测试数据中预测结果,

PredList = []
for val in X_test_scaled:
    for mod in NNmodelList: 
    pred = mod.predict(val)
PredList.append(pred)

现在,我遇到了以下错误:

AttributeError: 'History'对象没有属性'predict'

在之前的帖子中,似乎是在predict之前模型没有将训练集fit。然而,在我的代码中,我在第二个代码片段中对它们进行了拟合(fit)。有什么其他可能的错误吗?


我发现了这个链接 https://github.com/fchollet/keras/issues/2379 ,我把我的 model.compile 放在函数里面,我猜这样做是可以的。但我仍然无法理解我可能犯了哪些其他错误。 - i.n.n.m
2个回答

6

model.fit()方法不会返回Keras模型,而是返回包含培训过程中损失和指标值的History对象。因此,在这段代码中:

NNmodelList.append(nn_model.fit(i,j))

您正在创建一个历史对象列表,而不是模型。一个简单的解决方法是:

NNmodelList.append(nn_model)
nn_model.fit(i,j)

谢谢,现在可以运行了。如果有任何关于这个问题的资源,请随时指导我。 - i.n.n.m
1
Keras的文档应该包含了您需要了解的API及其使用方法。 - Mach_Zero

-1
enter code here

def build_regressor() :
  regressor = Sequential()
  regressor.add(Dense(units = 64, kernel_initializer = 'uniform', activation = 'relu', input_dim = 5))
  regressor.add(Dense(units =64 , kernel_initializer = 'uniform', activation = 'relu'))
  regressor.add(Dense(units = 1, kernel_initializer = 'uniform', activation = 'relu'))
  regressor.compile(optimizer='adam', loss='mean_squared_error')
  return regressor 
regressor=KerasRegressor(build_fn=build_regressor, batch_size=32,epochs=200)
results=regressor.fit(X_train,y_train)
regressor.history
print(results.coef_)

但是这显示以下错误:

属性错误:'KerasRegressor'对象没有属性'history'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接