machine-learning - 什么类型的神经网络可以处理可变的输入和输出大小?

标签 machine-learning neural-network conv-neural-network recurrent-neural-network

我正在尝试使用本文https://arxiv.org/abs/1712.01815中描述的方法使算法学习新游戏。

只有一个问题不直接适合这种方法。我想学习的游戏没有固定的棋盘尺寸。因此,当前输入张量的尺寸为 m*n*11,其中 m 和 n 是游戏板的尺寸,并且每次玩游戏时都会有所不同。因此,首先我需要一个能够利用这种不同输入大小的神经网络。

输出的大小也是棋盘大小的函数,因为它有一个向量,其中包含棋盘上每个可能的移动的条目,因此如果棋盘大小增加,输出向量将会更大。

我读过有关循环和递归神经网络的内容,但它们似乎都与 NLP 有关,我不确定如何将其转化为我的问题。

任何有关能够处理我的案例的神经网络架构的想法都将受到欢迎。

最佳答案

您需要的是指针网络 ( https://arxiv.org/abs/1506.03134 )

以下是关于它的帖子的介绍引用:

Pointer networks are a new neural architecture that learns pointers to positions in an input sequence. This is new because existing techniques need to have a fixed number of target classes, which isn't generally applicable— consider the Travelling Salesman Problem, in which the number of classes is equal to the number of inputs. An additional example would be sorting a variably sized sequence. - https://finbarr.ca/pointer-networks/

它是一个基于注意力的模型。

本质上,指针网络用于预测返回输入的指针,这意味着您的输出层实际上并不是固定的,而是可变的。

我使用它们的一个用例是将原始文本转换为 SQL 查询。

  • 输入:“1983 年美国销售了多少辆汽车”
  • 输出:SELECT COUNT(Car_id) FROM Car_table WHERE (Country='US' AND 年份=='1983')

诸如此类的原始文本的问题在于,它仅对特定表格有意义(在本例中,汽车表格包含一组有关汽车销售的变量,类似于棋盘游戏的不同板)。意思是,如果问题不能是唯一的输入。因此,实际进入指针网络的输入是 -

输入 -

  1. 查询
  2. 表的元数据(列名称)
  3. 所有分类列的标记词汇
  4. SQL 语法中的关键字(SELECT、WHERE 等)

所有这些都附加在一起。

输出层然后简单地指向输入的特定索引。它指向国家和年份(来自元数据中的列名称),它指向 US 和 1983(来自分类列词汇表中的标记),它从输入的 SQL 语法组件指向 SELECT、WHERE 等。

附加索引中这些索引的序列随后将用作计算图的输出,并使用作为 WIKISQL 数据集存在的训练数据集进行优化。

您的情况非常相似,您需要传递输入、游戏的元数据以及作为输出的一部分所需的内容作为附加索引。然后指针网络简单地从输入中进行选择(指向它们)。

关于machine-learning - 什么类型的神经网络可以处理可变的输入和输出大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49655891/

相关文章:

python - sklearn中的GridSearchCV是否使用整个数据集训练模型?

python - Tensorflow张量值图

neural-network - "Index Exceeds Matrix Dimensions"神经网络函数错误

theano - 如何在卷积神经网络中的池化层后打印图像尺寸

machine-learning - 无需训练值的神经网络学习

python - Tensorflow GPU OOM 错误

python - 如何看待 Keras 中提前停止导致的最佳纪元的损失?

python - PyTorch Softmax 尺寸错误

python - CNN模型分类错误: logits and labels must be broadcastable: logits_size=[32, 10] labels_size=[32,13]

tensorflow - 了解模型训练日志语句