神经网络 - 测试训练网络

时间:2018-05-21 00:11:41

标签: java python machine-learning neural-network artificial-intelligence

我通过反向传播编程(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)方法。从我所看到的,我的问题是我的训练数据的大小与我的输入数据不同。

请建议。

修改 我有这个措辞的方式,听起来我想要一个回归值。但是,我希望输出是一个概率向量(分类),然后我可以分析。

2 个答案:

答案 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}并获得所需的输出。