【问题标题】:AttributeError: 'History' object has no attribute 'predict' - Fitting a List of train and test dataAttributeError:“历史”对象没有属性“预测” - 拟合训练和测试数据列表
【发布时间】:2018-01-14 04:43:25
【问题描述】:

我正在尝试使用此example 的 NN 模型。我正在将值列表拟合到 NN 模型。但是,我收到了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'

在之前的threads 中,似乎是训练集不是fit 到predict 之前的模型。但是,在我的情况下,我将它们放入第二个代码 sn-p 中。任何想法我正在犯什么其他可能的错误?

【问题讨论】:

  • 我找到了github.com/fchollet/keras/issues/2379 这个,我在函数里面有我的model.compile,我猜它正在做这项工作。仍然无法理解,我正在犯什么其他可能的错误。

标签: python list machine-learning neural-network keras


【解决方案1】:

model.fit() 不返回 Keras 模型,而是一个 History 对象,其中包含训练的损失和度量值。所以在这段代码中:

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

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

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

【讨论】:

  • 谢谢,现在正在运行,请随时将我引导到讨论此问题的任何资源。
  • Keras docs 应该拥有您在 API 及其使用方面所需的一切。
【解决方案2】:
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_)

但这显示以下错误:

AttributeError: 'KerasRegressor' 对象没有属性 'history'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 2014-10-23
    • 2017-04-24
    • 2020-02-29
    相关资源
    最近更新 更多