Elman Network - 负数和高于1的计算值

时间:2016-01-06 21:09:43

标签: neural-network encog

我对数据进行了规范化,但在使用encog Elman模式计算新数据时仍然得到负数且高于1的值。

即使按原样运行ElmanXOR样本:

图层:1个输入,5个隐藏,1个输出 激活:ActivationSigmoid 培训:LevenbergMarquardt培训:             一个。贪婪             湾HybridStrategy - > NeuralSimulatedAnnealing

有可能吗?

2 个答案:

答案 0 :(得分:0)

如果您正在使用Encog的Sigmoid Activation功能,您应该只获得介于0和1之间的输出值,因为这是输出功能的全部功能(您确定输出节点没有使用线性激活功能吗?)。不应该获得高于1或低于-1的值。

Sigmoid Activation Function http://www.saedsayad.com/images/ANN_Sigmoid.png

我想知道您的数据是否未正确规范化(您可以上传标准化数据样本吗?)。

当你规范化时,我假设你做了类似的事情:

public static <T> Map<String, Object> createMap(String id, Map<String,String> m)

这将在-1和1之间规范化您的数据。我认为您应该尝试添加此代码以将所有内容规范化为0到1之间。

        var analyst = new EncogAnalyst();  
        var wizard = new AnalystWizard(analyst);  
        wizard.Wizard(DataFile, true, AnalystFileFormat.DecpntComma);

或者,您可以尝试使用不同的激活函数,如HyperbolicTangent,因为它在-1和1之间输出。

答案 1 :(得分:0)

Neural Network Results:
input: 1 ,ideal=0  actual: 0.625124775182661
input: 0 ,ideal=1  actual: -0.476592365362806
input: 1 ,ideal=0  actual: -0.0206919867584277
input: 0 ,ideal=0  actual: 1.35539859989167
input: 0 ,ideal=0  actual: -0.387613018442168
input: 0 ,ideal=0  actual: -0.819489650390268
input: 0 ,ideal=1  actual: 1.2046874965753
input: 1 ,ideal=1  actual: 0.870695301738905
input: 1 ,ideal=1  actual: 0.159201074403962
input: 1 ,ideal=1  actual: 0.884482632556325