Keras AttributeError:“历史”对象没有属性“预测”

MrY*_*ath 4 python deep-learning keras

注意:我看过这篇相关文章,但我不知道我可以使用这个答案来解决我的问题。

我尝试使用 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
Run Code Online (Sandbox Code Playgroud)

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

policy_network = policy_network().fit(images, actions,
                  batch_size=256,
                  epochs=10,
                  shuffle=True)
Run Code Online (Sandbox Code Playgroud)

但当我打电话时

action = policy_network.predict(image)
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*gro 6

Kerasfit()不会返回模型,但会返回一个包含History每个周期损失和指标的对象。您使用的代码模式根本不适用于 Keras。

像这样做:

model = policy_network()
model.fit(images, actions,
          batch_size=256,
          epochs=10,
          shuffle=True)
action = model.predict(image)
Run Code Online (Sandbox Code Playgroud)


Piy*_*ngh 5

当你对Python说时,你将policy_network的类从keras.Model对象更改为History对象

policy_network = policy_network().fit(..)
Run Code Online (Sandbox Code Playgroud)

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

history = policy_network.fit(..)
Run Code Online (Sandbox Code Playgroud)

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