神经网络基础倍增

时间:2014-04-07 04:31:05

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

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

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

我已经改变了

FROM:

/**
 * 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 } };

TO:

/**
 * 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

Epoch#274111错误:12.75

Epoch#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-)如何解决简单的乘法求解器问题?

感谢。

1 个答案:

答案 0 :(得分:2)

您的输出图层是sigmoid,这意味着它可以表示介于0和1之间的值,因此无法训练此类网络识别其他任何内容。但是,它不是网络的堕落,你应该扩展你的输出,使它适合这个间隔,然后在descale上。

简单地:

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

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

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