1

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

这里是源位置: 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-) 我怎样才能解决简单的乘法求解器问题?

谢谢。

4

1 回答 1

2

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

简单地:

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

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

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

于 2014-04-07T05:14:29.603 回答