哪种激活或传递函数适合分类3种类型的数据?

时间:2018-01-15 22:55:09

标签: matlab neural-network artificial-intelligence classification

我正在尝试训练MLP使用ABC对Iris数据集进行分类。从ABC的代码中我得到了最优的权重和偏差我输入它们到测试代码它给了我5个正确的分类和10个错误我认为我的代码中的错误是在训练过程中哪个激活或传递函数适合于分类3数据类型?

我通过这个

获得输出
trin= [4.7 3.2 1.6 0.2;
 4.8 3.1 1.6 0.2;
 5.4 3.4 1.5 0.4;
 5.2 4.1 1.5 0.1;
 5.5 4.2 1.4 0.2;
 5.7 2.6 3.5 1;
 5.5 2.4 3.8 1.1;
 5.5 2.4 3.7 1;
 5.8 2.7 3.9 1.2;
 6 2.7 5.1 1.6;
 6.7 3.3 5.7 2.1;
 7.2 3.2 6 1.8;
 6.2 2.8 4.8 1.8;
 6.1 3 4.9 1.8;
 6.4 2.8 5.6 2.1
 ];
 trout=[-1;-1;-1;-1;-1;
   0;0;0;0;0;
   1;1;1;1;1];
 inp=size(trin,2);
 out=size(trout,2);
 hidden=2;


 x=[[1,1.970,-2,4,1,-3.450,5,-5,-2.650,3.300,4,-2,-1.920]];
iw = reshape(x(1:hidden*inp),hidden,inp);
b1 = reshape(x(hidden*inp+1:hidden*inp+hidden),hidden,1);
lw =           
 reshape(x(hidden*inp+hidden+1:hidden*inp+hidden+hidden*out),out,hidden);


 b2=reshape(x
 (hidden*inp+hidden+hidden*out+1:hidden*inp+hidden+hidden*out+out)
 ,out,1);

y = tanh(tanh(trin*iw'+repmat(b1',size(trin,1),1))*lw'+
repmat(b2',size(trin,1),1));
e = gsubtract(trout,y);

tind = vec2ind(trout);
yind = vec2ind(y);
percentErrors = sum(tind ~= yind)/numel(tind);

x vextor是我从ABC优化算法得到的权重和偏差

1 个答案:

答案 0 :(得分:1)

您无法使用tanh输出真正执行多类分类。为此,使用softmax激活,其中输出是thre元素的向量,对应于每个类的概率。