关于python:Keras AttributeError:’History’对象没有属性’predict’

 2021-04-27 

Keras AttributeError: 'History' object has no attribute 'predict'

Note: I have seen this related post but I don't know I can use
the answer for my problem.

我尝试使用Keras进行简单回归。为此,我创建了一个简单的policy_network()函数,该函数将模型返回给我。

1
2
3
4
5
6
7
8
9
10
11
def policy_network():
    model = Sequential()
    model.add(MaxPooling2D(pool_size=(4, 4),input_shape=[64,64,3]))
    model.add(Flatten())
    model.add(Dense(1, kernel_initializer='normal', activation='linear'))

    model.compile(loss='mean_squared_error',
                  optimizer=Adam(lr=learning_rate),
                  metrics=['mean_squared_error'])

    return model

我还定义了一个全局变量policy_network。我使用以下分配

1
2
3
4
policy_network = policy_network().fit(images, actions,
                  batch_size=256,
                  epochs=10,
                  shuffle=True)

但是当我打电话给

1
action = policy_network.predict(image)

我得到了AttributeError: 'History' object has no attribute 'predict'


Keras的fit()不返回模型,但返回包含每个时期损失和指标的History对象。您使用的代码模式根本无法与Keras配合使用。

这样做:

1
2
3
4
5
6
model = policy_network()
model.fit(images, actions,
          batch_size=256,
          epochs=10,
          shuffle=True)
action = model.predict(image)

对Python说时,您已将policy_network的类从keras.Model对象更改为History对象。

1
policy_network = policy_network().fit(..)

如果要将历史记录存储在变量中,请将其存储在另一个变量中:

1
history = policy_network.fit(..)

您现在可以按照自己的方式使用policy_network.predict