我正在尝试实现一个循环神经网络并试图让它学习一个XOR函数作为一个小例子。
由于它是一个经常性的网络,我认为让它只用一个输入单元才能看出它能够记住它以前的状态是多么好;也就是说,基于顺序输入实现XOR功能:
INPUT(t-1) = 0
INPUT(t) = 1
OUTPUT(t) = 1
或
INPUT(t-1) = 1
INPUT(t) = 1
OUTPUT(t) = 0
所以我的输入训练数据按此顺序一次一位地显示:
inputs = { 0, 0, 1, 1, 0 }
和相应的目标输出
targets = { 0, 0, 1, 0, 1 }.
但它不是学习,即使我知道可能有很多原因,我想知道我可能没有正确定义我的数据集,因此我不会向我的网络提出正确的问题。我来到这里然后寻找关于什么是一个正确的训练集的想法,以监督学习“顺序”XOR功能。
我正在进行的实施类似于Elman RNN,如果您需要任何详细信息,请询问。
答案 0 :(得分:0)
包含一个与XOR问题一起使用的经常性Elman网络实现。它使用Encog(相对容易使用)来处理网络本身的实现。希望您能够看到实施中的差异并更正。