我有一个64x60x4的输入形状,用于强化学习代理人玩马里奥。 问题是,它似乎非常“如果屏幕看起来像这样那么做”#34;,这对这个问题并不是很好。
我想在Keras(TensorFlow)中的3个conv2D图层之后添加LSTM图层,但它抱怨它需要5个维度,但是收到4.当我使用图层时,它会变为6和5。
那么如何使用input_shape 64x60x4将LSTM图层放入以下模型中(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)
欢迎任何其他建议/指示。
答案 0 :(得分:0)
在您的MaxPooling层之后,我会建议这样的东西
out = Reshape((64, -1))(out)
out = LSTM(...)(out)
out = Flatten...
我也不建议先从32个过滤器开始然后上升,我建议从64个过滤器开始然后下降,但是,嘿,你呢。 我也建议针对不同方面(例如得分,时间等)使用单独的CNN层。除此之外,一切都已设置。