解释我的神经网络的输出

时间:2015-04-03 09:07:25

标签: matlab machine-learning neural-network

我曾尝试在matlab中训练神经网络,首先我按照以下方式构建了神经网络

net = feedforwardnet([30 20 20 ]);
[net ,tr] = train(net , XTRAIN , temp); 

生成具有以下架构的ANN: enter image description here

然后我测试我的神经网络如下

outputsOfTest = sim(net , XTEST);

outputsOfTest是一个向量代表神经网络测试的输出,通常一些outputsOfTest的元素是负值,例如outputsOfTest将是这样的{{1} }}。


那么如何解释这个输出?什么是负值表明?基于此输出,测试数据属于哪一类?

  1. 我应该将最大的值作为测试数据属于的类的指标吗?
    例如,如果我有输出向量[-.34 1.17 .17],其最大值为1,那么测试数据所属的类是3级
  2. 我应该在幅度上取最大值(取绝对值)吗?
    例如,如果我有输出向量[-2 .5 1],它的最大值是第一个元素,那么测试数据所属的类是1级。
  3. 注意:有时[-2 .5 1]元素的总和超过1,元素之和可能达到2.5,这是否正常?

1 个答案:

答案 0 :(得分:0)

您的输出图层似乎具有线性激活功能。因此,您的输出向量组件的值不限制在0和1之间。对于分类,您应该使用softmax激活函数:

softmax

Source
softmax的使用导致矢量分量的值在0和1之间,并且每个矢量的总和为1。所以基本上你得到了你的课程的概率分布。 Matlab help有一个显示效果的图像(左输入,就在softmax之后):

softmax matlab

UFDL Tutorial中有关于它的更多信息。

根据我的发现,以下代码更改可能在Matlab中起作用:

net = feedforwardnet([30 20 20]);
net.layers{4}.transferFcn='softmax';
[net ,tr] = train(net , XTRAIN , temp); 
相关问题