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

4

注意:我看到了这篇相关文章,但我不知道我能否使用其中的答案来解决我的问题。

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

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。我使用以下分配。
policy_network = policy_network().fit(images, actions,
                  batch_size=256,
                  epochs=10,
                  shuffle=True)

但是当我调用时
action = policy_network.predict(image)

我遇到了一个AttributeError错误:'History'对象没有'predict'属性。
2个回答

6
Keras 的 fit() 方法并不返回模型,而是返回包含每个 epoch 中的损失和评估指标的 History 对象。您正在使用的代码模式无法与 Keras 兼容。
请按以下方式操作:
model = policy_network()
model.fit(images, actions,
          batch_size=256,
          epochs=10,
          shuffle=True)
action = model.predict(image)

5
当你告诉Python时,你把policy_network的类从keras.Model对象更改为History对象。
policy_network = policy_network().fit(..)

如果想要将历史记录存储在变量中,需要将其存储在另一个变量中:
history = policy_network.fit(..)

现在您可以使用policy_network.predict,以您想要的方式。

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