keras 如何将TimeDistributed Layer与Convolutional Layer结合使用?

dgenwo3n  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(102)

我正在尝试构建一个非常基本的自动驾驶汽车转向角预测问题。我有大约30fps的视频,我已经将其转换为大约50000(即大约25分钟的镜头)的图像,我试图预测目标是转向角。
我尝试使用一些基本的卷积层,但我得到的MSE非常糟糕。所以,我试图使用CNN + RNN来改进我的模型。因为使用RNN是有意义的,因为我的数据是时间分布的。
我不知道如何将TimeDistributed LayerLSTM沿着使用。我基本上使用的是下面这样的东西,我有形状为width, height, channel = (200, 66, 3)的每个图像

img_height = 66
img_width = 200
channels = 3

input_l = Input(shape=(img_height, img_width, channels))
x = layers.Conv2D(128, kernel_size=(5, 5))(input_l)
x = layers.Conv2D(256, kernel_size=(5, 5))(x)
x = Flatten()(x)
out = Dense(1)(x)
model = Model(inputs=input_l, outputs=out)
model.summary()

字符串
到目前为止,我已经了解到,TimeDistributedLayer需要4维才能工作,但我的每个图像都是形状(200,66,3),我如何将每个图像转换为四维。我不知道怎么用这个。我读过几篇文章,但没有一篇谈到这一点。
如何将时间分布层沿着LSTM结合到这个架构中?谁能提供一个示例代码来实现它。

mkshixfv

mkshixfv1#

TimeDistributed层假定维度1是时间维度(时间步长),因此您需要向图像数据添加时间维度。例如:

from keras import layers
from keras import models

time_steps = 10
img_height = 66
img_width = 200
channels = 3

input_l = layers.Input(shape=(time_steps, img_height, img_width, channels))
x = layers.TimeDistributed( layers.Conv2D( 32, kernel_size=(5, 5) ) ) (input_l)
x = layers.TimeDistributed( layers.Conv2D(256, kernel_size=(5, 5)) ) (x)
x = layers.Flatten()(x)
out = layers.Dense(1)(x)
model = models.Model(inputs=input_l, outputs=out)
model.summary()

字符串
希望这能帮上忙。

相关问题