当前位置: 首页 > 知识库问答 >
问题:

在Conv2D层之后添加LSTM层,并添加一些其他输入

燕志学
2023-03-14

我正在开发一款使用强化学习的赛车游戏。为了训练模型,我在实现神经网络时面临一个问题。我找到了一些使用CNN的例子。但似乎添加额外的LSTM层将提高模型效率。我找到了以下示例。

https://team.inria.fr/rits/files/2018/02/ICRA18_EndToEndDriving_CameraReady.pdf

我需要实施的网络

问题是我不确定如何在这里实现LSTM层。我如何给LSTM层提供以下输入

  1. 处理后的图像输出
  2. 当前速度
  3. 上次操作

这是我当前使用的代码。我想在Conv2D之后添加LSTM层。

    self.__nb_actions = 28
    self.__gamma = 0.99

    #Define the model
    activation = 'relu'
    pic_input = Input(shape=(59,255,3))

    img_stack = Conv2D(16, (3, 3), name='convolution0', padding='same', activation=activation, trainable=train_conv_layers)(pic_input)
    img_stack = MaxPooling2D(pool_size=(2,2))(img_stack)
    img_stack = Conv2D(32, (3, 3), activation=activation, padding='same', name='convolution1', trainable=train_conv_layers)(img_stack)
    img_stack = MaxPooling2D(pool_size=(2, 2))(img_stack)
    img_stack = Conv2D(32, (3, 3), activation=activation, padding='same', name='convolution2', trainable=train_conv_layers)(img_stack)
    img_stack = MaxPooling2D(pool_size=(2, 2))(img_stack)
    img_stack = Flatten()(img_stack)
    img_stack = Dropout(0.2)(img_stack)

    img_stack = Dense(128, name='rl_dense', kernel_initializer=random_normal(stddev=0.01))(img_stack)

    img_stack=Dropout(0.2)(img_stack)
    output = Dense(self.__nb_actions, name='rl_output', kernel_initializer=random_normal(stddev=0.01))(img_stack)

    opt = Adam()
    self.__action_model = Model(inputs=[pic_input], outputs=output)

    self.__action_model.compile(optimizer=opt, loss='mean_squared_error')
    self.__action_model.summary()

谢谢

共有1个答案

仲孙凡
2023-03-14

有多种方法可以做到这一点,首先,重塑conv输出的输出,并将其馈送到lstm层。下面是一个解释性示例,使用各种方法为LSTM整形数据,并将密集层的输出馈送给LSTM

 类似资料:
  • 层是用于帮助组织在画布上的对象(例如:表、笔记、图像等)。你可以添加全部关联的对象到同一层。例如,你可以选择添加全部有关于销售的表到一层。若要创建一个新的层,点击工具栏的 “层”按钮,并点击画布的任意位置。 在画布中层对象的弹出式菜单选项包括: 选项 描述 剪切 从图表移除层并放它在剪贴板。 复制 从图表复制层到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部层 在图表中选择全部层。 删除 从图

  • 层是用于帮助组织在画布上的对象(例如:表、笔记、图像等)。你可以添加全部关联的对象到同一层。例如,你可以选择添加全部有关于销售的表到一层。若要创建一个新的层,点击工具栏的 “层”按钮,并点击画布的任意位置。 在画布中层对象的弹出式菜单选项包括: 选项 描述 剪切 从图表移除层并放它在剪贴板。 复制 从图表复制层到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部层 在图表中选择全部层。 删除 从图

  • 层是用于帮助组织在画布上的对象(例如:表、笔记、图像等)。你可以添加全部关联的对象到同一层。例如,你可以选择添加全部有关于销售的表到一层。若要创建一个新的层,点击工具栏的 按钮,并点击画布的任意位置。 在画布中层对象的弹出式菜单选项包括: 选项 描述 剪切 从图表移除层并放它在剪贴板。 复制 从图表复制层到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部层 在图表中选择全部层。 删除 从图表中删

  • 层是用于帮助组织在画布上的对象(例如:表、笔记、图像等)。你可以添加全部关联的对象到同一层。例如,你可以选择添加全部有关于销售的表到一层。若要创建一个新的层,点击工具栏的 按钮,并点击画布的任意位置。 在画布中层对象的弹出式菜单选项包括: 选项 描述 剪切 从图表移除层并放它在剪贴板。 复制 从图表复制层到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部层 在图表中选择全部层。 删除 从图表中删

  • 层是用于帮助组织在画布上的对象(例如:表、笔记、图像等)。你可以添加全部关联的对象到同一层。例如,你可以选择添加全部有关于销售的表到一层。若要创建一个新的层,点击工具栏的 按钮,并点击画布的任意位置。 在画布中层对象的弹出式菜单选项包括: 选项 描述 剪切 从图表移除层并放它在剪贴板。 复制 从图表复制层到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部层 在图表中选择全部层。 删除 从图表中删

  • 我开始学习RNN,并尝试在Keras中实现SimpleRNN。这是我的代码: 系统抛出以下错误: 回溯(最后一次调用):模型中第1行的文件“”。添加(SimpleRN(32))文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/keras/engine/sequential.py”,第18