我对数据进行了规范化,但在使用encog Elman模式计算新数据时仍然得到负数且高于1的值。
即使按原样运行ElmanXOR样本:
图层:1个输入,5个隐藏,1个输出 激活:ActivationSigmoid 培训:LevenbergMarquardt培训: 一个。贪婪 湾HybridStrategy - > NeuralSimulatedAnnealing
有可能吗?
答案 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