【问题标题】:Adding LSTM to conv2D layers in keras将 LSTM 添加到 keras 中的 conv2D 层
【发布时间】:2018-03-30 15:12:04
【问题描述】:

我有一个 64x60x4 的输入形状,用于强化学习代理玩马里奥。 问题是,看起来很“如果屏幕看起来像这样,那就那样做”,这对这个问题不是很好。

我想在 Keras (TensorFlow) 中的 3 个 conv2D 层之后添加一个 LSTM 层,但它抱怨它需要 5 个维度,但收到了 4 个。当我玩这些层时,它变成了 6 和 5。

那么,如何将 LSTM 层放入以下模型,其中 input_shape 为 64x60x4(4 帧是最后 4 帧,用于帮助学习物体的加速度和方向):

image_input = Input(shape=input_shape)

out = Conv2D(filters=32, kernel_size=8, strides=(4, 4), padding=padding, activation='relu')(image_input)

out = Conv2D(filters=64, kernel_size=4, strides=(2, 2), padding=padding, activation='relu')(out)

out = Conv2D(filters=64, kernel_size=4, strides=(1, 1), padding=padding, activation='relu')(out)

out = MaxPooling2D(pool_size=(2, 2))(out)

out = Flatten()(out)

out = Dense(256, activation='relu')(out)

### LSTM should go here ###

q_value = Dense(num_actions, activation='linear')(out)

欢迎任何其他建议/指针。

【问题讨论】:

标签: python tensorflow keras


【解决方案1】:

在你的 MaxPooling 层之后,我会建议这样的东西)

out = Reshape((64, -1))(out)
out = LSTM(...)(out)
out = Flatten...

另外,我不建议从 32 个过滤器开始然后上升,我建议从 64 个开始然后下降,但是嘿,你可以。 此外,我建议针对不同方面使用单独的 CNN 层,例如分数、时间……等。除此之外,一切都准备好了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 2019-08-21
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多