我已经编程(Java)我自己的前馈网络学习通过反向传播。我的网络接受了学习异或问题的训练。我有一个输入矩阵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)
方法。据我所见,我的问题是我的训练数据与我的输入数据有不同的大小。
请建议一下。
编辑:这个词,听起来像是我想要一个回归值。然而,我希望输出是一个概率向量(分类),然后我可以分析。
发布于 2018-05-21 01:05:51
在您的情况下,您的神经网络应该有一个维数为2和输出为1的输入。因此,在培训期间,您将提供每个示例输入{x0、x1}和输出{y0}供其学习。最后,在预测时,您可以提供一个向量{.9,.1}并得到所需的输出。
发布于 2018-05-21 01:03:10
基本上,当你训练一个神经网络时,你会得到一堆可以用来预测结果的参数。您可以通过在每个层中添加特性和权重的乘积来获得结果,然后将激活函数应用到其中。例如,假设您的网络有3层(特性除外),而每个隐藏层有3个神经元,输出层有一个神经元。W1表示第一层的权重,因此它的形状为3,2。使用相同的参数,W2,第二层的权重为3,3。最后,输出层的权重W3为1,3。现在,如果我们使用一个称为g(z)的函数作为激活函数,您可以计算出这样的结果:
Z1 = W1.X
A1 = g(Z1)
Z2 = W2.A1
A2 = g(Z2)
Z3 = W3.A2
A3 = g(Z3)
A3是你的结果,预测两个数字的异或。请注意,我没有考虑过这个例子的偏见术语。
https://stackoverflow.com/questions/50440497
复制相似问题