如何将4个状态表示为人工神经网络的输入?

时间:2017-09-12 22:21:53

标签: arrays neural-network

标题可能有点不清楚。可悲的是,我无法想出一个更好的。

所以问题如下。有一个固定大小的数组,其中每个位置可以有4种状态:空,阻塞,正(0和1之间的限制值)和负数(0和1之间的限制值(尽管这可能是0到-1) )。有限,我的意思是该值只能采用0.1,0.2,...... 1.0的形式,每个值也只出现一次。根据数组的填充方式,我想预测下一个版本的数组是什么样的。我试图将数组中的每个位置表示为一个输入节点,但我无法弄清楚如何执行此操作(如何将所有四个状态表示为一个数字)。还应注意的是,每种状态的最大量是已知的。因此,我可以让每个节点代表一个状态(阻塞,-1.0,-0.9,...,0.9,1.0),然后说明该状态作为输入发生的索引,而不是让每个节点代表一个索引。该节点的值。

哪种方式对神经网络更实用或更有效?

顺便说一句,它是一个神经网络,有一个输入层,一个隐藏层和一个输出层。

1 个答案:

答案 0 :(得分:1)

我建议你首先为阵列中的每个细胞使用3个神经元:

  • 告诉网络该单元格是否为空的一个。您可以将值0用于空,将1用于非空(仅作为示例,其他值也应该起作用,只需确保一致)。

  • 一个完全相同的东西,但它会告诉网络该单元是否被阻止。 (再次作为0和1输入)

  • 最后神经元接收正/负值。你可以尝试各种各样的东西。您应该首先尝试,如果它只是设置值,如果有一个,如果没有值,您将输入设置为0.这可能会使网络有点困难,因为它无法看到0 = 0和0 = 0之间的差异。如果它不起作用,您可以尝试将所有输入值映射到0和1之间(在您的情况下,只需添加1然后除以2,然后将值传递给网络)如果单元格被阻塞/空,则输入-1。

如果你不能让这个工作首先使用参数玩一会儿,改变隐藏层和神经元的数量,改变学习率和训练的动力。

如果输入对你的任务不是很好,我建议你做你之前提到的:每个细胞的每个可能状态的一个神经元。这种方法需要更长的时间进行训练,但它确实可以工作(如果没有,你的任务对于网络来说太复杂了,或者你需要更多的训练时间)。