我通过反向传播编程(Java)我自己的前馈网络学习。我的网络经过培训,可以学习XOR问题。我有一个输入矩阵4x2和目标4x1。
输入:
{{0,0},
{0,1},
{1,0},
{1,1}}
输出:
{0.95048}
{-0.06721}
{-0.06826}
{0.95122}
我有这个训练有素的网络,现在我想在新输入上测试它,如:
{.1,.9} //should result in 1
但是,我不确定如何实现float predict(double[] input)
方法。从我所看到的,我的问题是我的训练数据的大小与我的输入数据不同。
请建议。
修改 我有这个措辞的方式,听起来我想要一个回归值。但是,我希望输出是一个概率向量(分类),然后我可以分析。
答案 0 :(得分:0)
基本上,当您训练神经网络时,您会获得一组可用于预测结果的参数。您可以通过在每个图层中添加要素和权重的产品来获得结果,然后将激活函数应用于该结果。例如,假设您的网络有3层(功能除外),每个隐藏层有三个神经元,输出层有一个神经元。 W1表示第一层的权重,因此它的形状为[3,2]。使用相同的参数W2,第二层的权重具有[3,3]的形状。最后,作为输出图层权重的W3的形状为[1,3]。现在,如果我们使用一个名为g(z)的函数作为激活函数,您可以计算如下示例的结果:
notes.append(Note(date: "06-06-2012",comment:"Created Note"))
和A3是你的结果,预测两个数字的XOR。请注意,我没有考虑此示例的偏见术语。
答案 1 :(得分:0)
在您的情况下,您的神经网络应该具有维度2和输出1的输入。因此在训练期间,您将提供每个示例输入{x0,x1}和输出{y0}以供其学习。然后最后在预测时你可以提供一个向量{.9,.1}并获得所需的输出。