您好我正在学习神经网络。 是一个只存储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-)如何解决简单的乘法求解器问题?
感谢。
答案 0 :(得分:2)
您的输出图层是sigmoid,这意味着它可以仅表示介于0和1之间的值,因此无法训练此类网络识别其他任何内容。但是,它不是网络的堕落,你应该扩展你的输出,使它适合这个间隔,然后在descale上。
简单地:
现在,您可以训练网络,并检索原始输出,只需将该值乘以8即可。
请记住,简单的神经网络是用于符号计算的不工具。如果您正在寻找实际会找到a*b
公式的模型,请阅读symbolic function networks
。