由于matlab升级,已经不能想以前一样直接在newff函数里面规定好隐含层多少个,或者几层,还可以有多个神经元的输出层。改版后需要输出层变成矩阵的形式,神经网络工具箱可以自动识别输出层有几个神经元。详细代码如何下:
num=xlsread('data_shengzheng.xlsx','Sheet1','A2:I11');input_train=num(1:9,1:8)';
output_train=num(1:9,9)';
input_test=num(10,1:8)';%归一化处理[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
%构造9个神经元的输出层
for i= 1:9switch outputn(i)case 1outputn(i,:)=[1 0 0 0 0 0 0 0 0];case 2outputn(i,:)=[0 1 0 0 0 0 0 0 0];case 3outputn(i,:)=[0 0 1 0 0 0 0 0 0];case 4outputn(i,:)=[0 0 0 1 0 0 0 0 0];case 5outputn(i,:)=[0 0 0 0 1 0 0 0 0];case 6outputn(i,:)=[0 0 0 0 0 1 0 0 0];case 7outputn(i,:)=[0 0 0 0 0 0 1 0 0];case 8outputn(i,:)=[0 0 0 0 0 0 0 1 0];case 9outputn(i,:)=[0 0 0 0 0 0 0 0 1];endend
net=newff(inputn,outputn,8);net.trainParam.epochs=100;%迭代次数
net.trainParam.lr=0.1;%学习率
net.trainParam.goal=0.00004;%误差平方和net=train(net,inputn,outputn);%网络训练
data_shengzheng.xlsx数据内容为:
结果如下: