tensorflow - 具有向量输入和向量输出的 DQN 代理
问题描述
我是强化学习和深度学习的初学者,我想为 DQN 代理(在 Keras 中)构建一个神经网络,它接收一个长度等于 3 的向量作为输入,并输出另一个长度等于 10 的向量。
输入向量有一个元素等于 1,其他元素等于 0。它也可以全为零,但不能有多个值为 1 的元素。
例子:
[0, 1, 0]
或者:
[0, 0, 0]
输出必须是一个包含 10 个元素的向量,其中一个元素等于 1,所有其他元素的值都等于 0。就像输入向量一样,它也可以全为零,但不能超过一个值为 1 的元素。
例子:
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
或者:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
如果输入向量中包含“1”,则输出向量必须最多有一列值为 1。
如果输入向量全为零,则输出向量必须将所有值设置为 0。
我试图创建一个卷积神经网络,但我遇到的示例将图像(因此是 2D 矩阵)视为输入,并将一个值作为输出而不是向量。
解决方案
DQN 强烈基于马尔可夫决策过程,因此必须明确定义什么是状态、动作和奖励的概念。
对我来说,您的输入似乎是一种以单热编码编码的状态。要为此问题选择架构,您需要提供更多详细信息。例如,它可以是用于时间序列的 LSTM 层,也可以是简单的密集层。
DQN 中的输出始终是单一且连续的值,它表示在某种状态下的好坏程度并执行一个动作a,称为 Q 值。对我来说,你所说的输出,其实就是你的行动。
我强烈建议您按照这里的材料了解马尔可夫决策过程的每个组成部分,然后深入研究 DQN 方法。
推荐阅读
- javascript - 基于年月组合的对象组数组
- python - 跨 MRI 切片的最大池化
- java - 在 Java 中将 String 转换为 HashSet
- .net - 如何使用 LabVIEW .NET 构造函数节点在 Grpc.Core.Api.dll 中创建 Channel Credentials 对象?
- variables - 如何在 Pygame 中将输入值存储为变量
- python - 为什么我在 /admin/main/consultation/ 'NoneType' 对象没有属性 'lastname' 处出现 AttributeError 错误
- elixir - 如何将收集分成更小的组 - Elixir
- java - 当方法调用参数很长时,将“)”放在新行上不起作用
- c# - C# 中将字符串作为输入并返回整数的方法
- java - 检查HashMap / Map是否包含Java中的类变量