我曾尝试在matlab中训练神经网络,首先我按照以下方式构建了神经网络
net = feedforwardnet([30 20 20 ]);
[net ,tr] = train(net , XTRAIN , temp);
生成具有以下架构的ANN:
然后我测试我的神经网络如下
outputsOfTest = sim(net , XTEST);
outputsOfTest
是一个向量代表神经网络测试的输出,通常一些outputsOfTest
的元素是负值,例如outputsOfTest
将是这样的{{1} }}。
那么如何解释这个输出?什么是负值表明?基于此输出,测试数据属于哪一类?
[-.34 1.17 .17]
,其最大值为1,那么测试数据所属的类是3级[-2 .5 1]
,它的最大值是第一个元素,那么测试数据所属的类是1级。注意:有时[-2 .5 1]
元素的总和超过1,元素之和可能达到2.5,这是否正常?
答案 0 :(得分:0)
您的输出图层似乎具有线性激活功能。因此,您的输出向量组件的值不限制在0和1之间。对于分类,您应该使用softmax激活函数:
(Source)
softmax的使用导致矢量分量的值在0和1之间,并且每个矢量的总和为1。所以基本上你得到了你的课程的概率分布。 Matlab help有一个显示效果的图像(左输入,就在softmax之后):
UFDL Tutorial中有关于它的更多信息。
根据我的发现,以下代码更改可能在Matlab中起作用:
net = feedforwardnet([30 20 20]);
net.layers{4}.transferFcn='softmax';
[net ,tr] = train(net , XTRAIN , temp);