我正在尝试使用本文https://arxiv.org/abs/1712.01815中描述的方法来使算法学习一个新的游戏。
只有一个问题不直接适用于这种方法。我正在尝试学习的游戏没有固定的棋盘大小。因此,目前输入张量的维度为m*n*11,其中m和n是游戏板的维度,每次玩游戏时都会发生变化。因此,首先,我需要一个能够利用这种不同输入大小的神经网络。
输出的大小也是棋盘大小的函数,因为它有一个向量,其中包含棋盘上每个可能移动的条目,因此,如果棋盘大小增加,输出向量将会更大。
我读到过递归神经网络和递归神经网络,但它们似乎都与NLP有关,我不确定如何将其转换为我的问题。
任何关于NN架构的想法能够处理我的情况都将受到欢迎。
发布于 2019-07-31 19:51:54
您需要的是指针网络(https://arxiv.org/abs/1506.03134)
以下是一篇关于它的文章中的引言:
指针网络是一种新的神经体系结构,它学习指向输入序列中位置的指针。这是新的,因为现有的技术需要具有固定数量的目标类,这不是一般适用的-考虑Travelling问题,其中类的数量等于输入的数量。另一个例子是对大小可变的序列进行排序。- https://finbarr.ca/pointer-networks/
这是一个基于注意力的模型。
本质上,指针网络用于预测指向输入的指针,这意味着输出层实际上不是固定的,而是可变的。
我使用它们的一个用例是将原始文本转换为SQL查询。
像这样的原始文本的问题是,它只对特定的表有意义(在本例中,汽车表包含一组围绕汽车销售的变量,类似于棋盘游戏的不同棋盘)。这意味着,如果问题不是唯一的输入。所以实际进入指针网络的输入是以下各项的组合-
输入-
表的
SQL语法(SELECT、WHERE等)的
所有这些都附加在一起。
然后,输出层简单地指向输入的特定索引。它指向国家和年份(来自元数据中的列名),它指向US和1983 (来自分类列词汇表中的标记),它指向输入的SQL语法组件中的SELECT、WHERE等。
然后,附加索引中这些索引的序列将用作计算图的输出,并使用作为WIKISQL数据集存在的训练数据集进行优化。
您的情况非常类似,您需要传递输入、游戏的元数据,以及作为输出的一部分作为附加索引的内容。然后指针网络简单地从输入中进行选择(指向它们)。
发布于 2018-04-05 00:28:15
您需要回到固定的输入/输出问题。
当应用于图像/时间序列时,解决此问题的常用方法是...就是使用滑动窗口来缩小尺寸。也许这可以应用到你的游戏中。
发布于 2019-07-30 01:00:47
完全卷积神经网络能够做到这一点。卷积层的参数是卷积核。卷积核不太关心输入大小(是的,与步长、填充输入和核大小相关的某些限制)。
典型的用例是一些卷积层,然后是最大池,并一次又一次地重复到某个点,其中过滤器被展平并连接到密集层。密集层是有问题的,因为他希望输入是固定大小的。如果存在另一个conv2图层,则您的输出将是另一个适当大小的要素地图。
这种网络的例子可以是YOLOv3。例如,如果您将416x416x3的图像提供给它,那么输出可以是13x13x数量的滤镜(我知道YOLOv3有更多的输出层,但为了简单,我将只讨论一个)。如果您向YOLOv3提供256x256x3的图像,则输出将是特征图6x6xnumber of filters。
这样网络就不会崩溃并产生结果。效果会好吗?我不知道,也许是,也许不是。我从来没有以这种方式使用它,我总是调整图像大小到推荐的大小或重新训练网络。
https://stackoverflow.com/questions/49655891
复制相似问题