【问题标题】:Neural network basics multiply神经网络基础知识成倍增加
【发布时间】:2014-04-07 04:31:04
【问题描述】:

你好,我正在学习神经网络。 神经元是否只存储 1 或 -1 之间的值?我不能给出 255 或 1024 之类的值吗? 我正在寻找 encog java 库 XOR 函数求解器示例。 我想通过更改 XOR_INPUT 和 XOR_IDEAL 将 XOR 更改为 Multiplier。

这里是源位置: http://www.heatonresearch.com/wiki/Hello_World

我变了

来自:

/**
 * The input necessary for XOR.
 */
public static double XOR_INPUT[][] = { { 0.0, 0.0 }, { 1.0, 0.0 },
        { 0.0, 1.0 }, { 1.0, 1.0 } };

/**
 * The ideal data necessary for XOR.
 */
public static double XOR_IDEAL[][] = { { 0.0 }, { 1.0 }, { 1.0 }, { 0.0 } };

到:

/**
 * The input necessary for XOR.
 */
public static double XOR_INPUT[][] = { { 0.0, 0.0 }, { 1.0, 0.0 },
        { 1.0, 2.0 }, { 2.0, 4.0 } };

/**
 * The ideal data necessary for XOR.
 */
public static double XOR_IDEAL[][] = { { 0.0 }, { 1.0 }, { 2.0 }, { 8.0 } };

将值更改为这些后。 我得到了无限循环并输出常量:

纪元 #274107 错误:12.75

纪元 #274108 错误:12.75

纪元 #274109 错误:12.75

纪元 #274110 错误:12.75

纪元 #274111 错误:12.75

纪元 #274112 错误:12.75

纪元 #274113 错误:12.75

纪元 #274114 错误:12.75

纪元 #274115 错误:12.75

纪元 #274116 错误:12.75

纪元 #274117 错误:12.75

纪元 #274118 错误:12.75

纪元 #274119 错误:12.75

这是问题;

1-)这称为局部最小值吗?

2-) 我需要在 (0 和 1) 或 (-1 和 1) 之间设置值吗?

3-) 如何解决简单的乘法求解器问题?

谢谢。

【问题讨论】:

  • 您可以尝试如下操作: (a) 添加另一个隐藏层。 (b) 标准化您的数据。我最近没有搞乱神经网络,但如果记忆有用,当输入范围在 0 和 1 之间时,它们往往工作得最好。
  • 添加更多的隐藏层(多于一个)几乎总是是个坏主意(在简单的神经网络中)。

标签: java neural-network encog biological-neural-network


【解决方案1】:

您的输出层是 sigmoid,这意味着它只能表示 0 到 1 之间的值,因此不可能训练这样的网络来识别其他任何东西。但是,这不是网络故障,您应该缩放输出以使其适合此间隔,然后再进行除垢。

简单地说:

  • 电流输出 0,1,2,8
  • 我们假设 8 是“最大值”,并将它们按比例缩小 8 得到:0,1/8,1/4,1

现在您训练您的网络,检索原始输出只需将值乘以 8。

请记住,简单的神经网络不是用于符号计算的工具。如果您正在寻找能够真正找到a*b 公式的模型,请阅读symbolic function networks

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2019-08-14
    • 2021-12-27
    • 1970-01-01
    • 2017-03-03
    • 2013-12-09
    • 1970-01-01
    相关资源
    最近更新 更多