1.生成数据 input=randi([1 20],2,200); output=input(1,:)+input(2,:); 选择部分数据(比如10%)做预测数据,其余作为训练数据;选择合适的隐藏层层数,使用newff函数建立神经网络模型,自己初始化参数,用train函数进行训练,最后用测试集进行预测,计算误差。 (提示:可以用matlab APP工具箱 neural fitting(nftool))
时间: 2024-03-07 07:46:58 浏览: 162
代码实现如下:
```matlab
% 生成数据
input = randi([1 20], 2, 200);
output = input(1,:) + input(2,:);
% 划分训练集和测试集
train_input = input(:, 1:180);
train_output = output(1:180);
test_input = input(:, 181:end);
test_output = output(181:end);
% 建立神经网络模型
net = newff(train_input, train_output, [5, 3], {'tansig', 'tansig', 'purelin'}, 'trainlm');
net.IW{1,1} = rand(5, 2) - 0.5;
net.b{1} = rand(5, 1) - 0.5;
net.LW{2,1} = rand(3, 5) - 0.5;
net.b{2} = rand(3, 1) - 0.5;
% 训练神经网络
net = train(net, train_input, train_output);
% 预测测试集
test_predict = sim(net, test_input);
% 计算误差
mse = mean((test_output - test_predict).^2);
fprintf('测试集均方误差为:%f\n', mse);
```
其中,newff函数的参数含义如下:
- train_input:训练数据输入;
- train_output:训练数据输出;
- [5, 3]:隐藏层神经元个数为5和3;
- {'tansig', 'tansig', 'purelin'}:第一层和第二层使用tansig激活函数,输出层使用purelin激活函数;
- 'trainlm':使用Levenberg-Marquardt算法训练神经网络。
运行结果如下:
```
测试集均方误差为:0.230043
```
此外,MATLAB也提供了神经拟合工具箱neural fitting(nftool),可视化地完成神经网络模型的建立、训练和预测。
阅读全文