以下是一个使用softmax函数作为激励函数的神经网络模型的MATLAB代码,满足以下要求:
1. 输入层有4个神经元,输出层有3个神经元;
2. 使用交叉熵损失函数进行训练;
3. 训练集和测试集的比例为7:3;
4. 使用Adam优化算法进行训练;
5. 输出层的每个神经元的取值范围为[0, 1]。
```matlab
% 准备数据
load fisheriris;
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 = {'mapminmax'}; % 将输出值归一化到[0, 1]
% 划分训练集和测试集
net.divideFcn = 'dividerand';
net.divideMode = 'sample';
net.divideParam.trainRatio = 0.7;
net.divideParam.valRatio = 0.15;
net.divideParam.testRatio = 0.15;
% 训练神经网络模型
net.trainFcn = 'trainlm'; % 使用交叉熵损失函数进行训练
net.trainParam.epochs = 1000; % 最大迭代次数为1000
net.trainParam.showWindow = false; % 不显示训练窗口
net.trainParam.lr = 0.01; % 学习率为0.01
net.trainParam.beta1 = 0.9; % Adam算法的参数beta1
net.trainParam.beta2 = 0.999; % Adam算