gpt4 book ai didi

matlab - 解释我的神经网络的输出

转载 作者:行者123 更新时间:2023-11-30 09:22:33 32 4
gpt4 key购买 nike

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

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

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

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

outputsOfTest = sim(net , XTEST);

outputsOfTest是一个表示神经网络测试输出的向量,通常outputsOfTest的一些元素是负值,例如outputsOfTest > 将类似于 [-.34 1.17 .17]


那么如何解释这个输出呢?负值表示什么?根据此输出,测试数据将属于哪个类?

  1. 我应该以最大值作为测试数据所属类的指标吗?
    例如,如果我有输出向量 [-2 .5 1] ,其最大值为 1,那么测试数据所属的类为 3 类
  2. 我应该取最大值(取绝对值)吗?
    例如,如果我有输出向量 [-2 .5 1] ,它的大小中的最大值是第一个元素,所以测试数据所属的类是 class 1.

注意:有时outputsOfTest的元素之和超过1,元素之和可能达到2.5,这正常吗?

最佳答案

你的输出层似乎有一个线性激活函数。因此,您的输出向量分量的值不限于 0 到 1 之间。对于分类,您应该使用 softmax 激活函数:

softmax

( Source )
使用 softmax 会产生值介于 0 和 1 之间的向量分量,并且每个向量的总和为 1。所以基本上你得到了你的类(class)的概率分布。 Matlab help有一张显示效果的图像(左输入,softmax 之后右):

softmax matlab

UFDL Tutorial中有更多相关信息。 .

据我所知,以下代码更改可能在 Matlab 中有效:

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

关于matlab - 解释我的神经网络的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29429257/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com