【问题标题】:Neural Network - Test Trained Network神经网络 - 测试训练网络
【发布时间】:2018-10-30 14:49:03
【问题描述】:

我通过反向传播编写了我自己的前馈网络学习 (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) 方法。据我所知,我的问题是我的训练数据与输入数据的大小不同。

请提出建议。

编辑: 我的措辞方式听起来像是我想要一个回归值。但是,我希望输出是一个概率向量(分类),然后我可以对其进行分析。

【问题讨论】:

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


    【解决方案1】:

    在您的情况下,您的神经网络应该有一个维度为 2 和输出为 1 的输入。因此,在训练期间,您将提供每个示例输入 {x0, x1} 和输出 {y0} 供其学习。然后最后在预测时,您可以提供一个向量 {.9, .1} 并获得所需的输出。

    【讨论】:

    • 我设置输入神经元的方式,它们使用双精度作为其“数据”。输入层是否需要 8 个神经元长,或者我将如何适应作为 2x1 向量的输入?
    • 第一层应该有 2 个输入神经元而不是 8 个。训练将通过同时呈现 {x0, x1} 和 {y0} 输入和输出对中的每一个来进行。跨度>
    【解决方案2】:

    基本上,当你训练一个神经网络时,你会得到一堆可用于预测结果的参数。您可以通过在每一层中添加特征和权重的乘积来获得结果,然后将激活函数应用于它。例如,假设您的网络有 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 是你的结果,预测两个数字的异或。请注意,我没有考虑此示例的偏差项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2014-02-24
      • 2015-04-17
      • 2020-05-20
      • 1970-01-01
      • 2010-11-20
      • 2019-09-15
      相关资源
      最近更新 更多