以下是一个使用softmax函数作为激励函数的神经网络模型的MATLAB代码,输出范围为0、1、2:
```matlab
% 准备数据
load iris_dataset;
x = meas';
t = zeros(3, size(x, 2));
t(1, species == 'setosa') = 1;
t(2, species == 'versicolor') = 1;
t(3, species == 'virginica') = 1;
% 创建神经网络模型
net = feedforwardnet([10, 5]); % 两个隐藏层,分别有10和5个神经元
net.layers{end}.transferFcn = 'softmax'; % 设置输出层的激励函数为softmax
net.outputs{end}.processFcns = {}; % 取消输出值的归一化处理
% 划分训练集和测试集
net.divideFcn = 'dividerand';
net.divideMode = 'sample';
net.divideParam.trainRatio = 0.7;
net.divideParam.valRatio = 0.15;
net.divideParam.testRatio = 0.15;
% 训练神经网络模型
net.trainFcn = 'trainscg'; % 使用SCG算法进行训练
net.trainParam.max_fail = 20; % 允许连续20次验证集误差没有改善
net.trainParam.showWindow = false; % 不显示训练窗口
[net, tr] = train(net, x, t);
% 对测试集进行预测
y = net(x(:, tr.testInd));
[~, y_pred] = max(y); % 将输出值最大的神经元作为预测结果
y_pred = y_pred - 1; % 将预测结果转化为0、1、2
% 计算准确率
accuracy = sum(y_pred == (find(t(:, tr.testInd))' - 1)) / length(tr.testInd);
disp(['Accuracy: ', num2str(accuracy)]);
```
这个代码使用鸢尾花数据集进行训练和测试,输出层有3个