科学计算与数据处理综合设计实验四.docx
《科学计算与数据处理综合设计实验四.docx》由会员分享,可在线阅读,更多相关《科学计算与数据处理综合设计实验四.docx(10页珍藏版)》请在冰豆网上搜索。
![科学计算与数据处理综合设计实验四.docx](https://file1.bdocx.com/fileroot1/2023-4/16/3f26c13e-9daa-4391-8371-215e740f0e84/3f26c13e-9daa-4391-8371-215e740f0e841.gif)
科学计算与数据处理综合设计实验四
科学计算与数据处理综合设计实验四
———————————————————————————————— 作者:
————————————————————————————————日期:
科学计算与数据处理实验报告
学 号
S313060052
姓 名
王腾祥
实验名称
科学计算与数据处理综合设计实验
实验目的
1、深入研究MATLAB在计算机相关的某一专业领域的综合应用
2、熟悉MATLAB中专业级Toolbox或Simulink的功能和用法
3、学会综合运用MATLAB解决并行运算与神经网络-基于CPU/GPU的并行神经网络运算
实验方案
CPU并行
一、标准单线程的神经网络训练与仿真过程
[x,t]=house_dataset;
net1=feedforwardnet(10);
net2=train(net1,x,t);
y=sim(net2,x);
二、打开MATLAB workers
matlabpool open
检查worker数量
poolsize=matlabpool('size')
三、设置train与sim函数中的参数“Useparallel”为“yes”。
net2=train(net1,x,t,'Useparallel','yes')
y=sim(net2,x,'Useparallel','yes')
四、使用“showResources”选项证实神经网络运算确实在各个worker上运行。
net2=train(net1,x,t,'useParallel','yes','showResources','yes');
y=sim(net2,x,'useParallel','yes','showResources','yes');
五、将一个数据集进行随机划分,同时保存到不同的文件
fori=1:
matlabpool('size')
x=rand(2,1000);
save(['inputs' num2str(i)],'x')
t=x(1,:
).*x(2,:
)+2*(x(1,:
)+x(2,:
));
save(['target'num2str(i)],'t');
clear xt
end
六、实现并行运算加载数据集
for i=1:
matlabpool('size')
data=load(['inputs'num2str(i)],'x')
xc{i}=data.x
data=load(['target'num2str(i)],'t')
tc{i}=data.t;
cleardata
end
net2=configure(net2,xc{1},tc{1});
net2=train(net2,xc,tc);
yc=sim(net2,xc)
七、得到各个worker返回的Composite结果
fori=1:
matlabpool('size')
yi=yc{i}
end
八、GPU并行
count=gpuDeviceCount
gpu1=gpuDevice
(1)
gpuCores1=gpu1.MultiprocessorCount*gpu1.SIMDWidth
net2=train(net1,x,t,'useGPU','yes')
y=sim(net,x,'useGPU','yes')
net1.trainFcn='trainscg';
net2=train(net1,x,t,'useGPU','yes','showResources','yes');
Matlab神经网络43个案例分析
九、并行运算与神经网络-基于CPU/GPU的并行神经网络运算
by王小川(@王小川_matlab)
Email:
十、清空环境变量
clearall
clc
warning off
十一、打开matlabpool
matlabpool open
poolsize=matlabpool('size');
十二、加载数据
load bodyfat_dataset
inputs=bodyfatInputs;
targets=bodyfatTargets;
十三、创建一个拟合神经网络
hiddenLayerSize =10;隐藏层神经元个数为10
net=fitnet(hiddenLayerSize);创建网络
十四、指定输入与输出处理函数(本操作并非必须)
net.inputs{1}.processFcns={'removeconstantrows','mapminmax'};
net.outputs{2}.processFcns ={'removeconstantrows','mapminmax'};
十五、设置神经网络的训练、验证、测试数据集划分
net.divideFcn='dividerand';随机划分数据集
net.divideMode = 'sample';划分单位为每一个数据
net.divideParam.trainRatio= 70/100;训练集比例
net.divideParam.valRatio =15/100;验证集比例
net.divideParam.testRatio= 15/100;测试集比例
十六、设置网络的训练函数
net.trainFcn='trainlm'; Levenberg-Marquardt
十七、设置网络的误差函数
net.performFcn='mse';Mean squarederror
十八、设置网络可视化函数
net.plotFcns= {'plotperform','plottrainstate','ploterrhist', ...
'plotregression','plotfit'};
十九、单线程网络训练
tic
[net1,tr1] = train(net,inputs,targets);
t1=toc;
disp(['单线程神经网络的训练时间为',num2str(t1),'秒']);
二十、并行网络训练
tic
[net2,tr2]=train(net,inputs,targets,'useParallel','yes','showResources','yes');
t2=toc;
disp(['并行神经网络的训练时间为',num2str(t2),'秒']);
二十一、网络效果验证
outputs1 =sim(net1,inputs);
outputs2 =sim(net2,inputs);
errors1=gsubtract(targets,outputs1);
errors2=gsubtract(targets,outputs2);
performance1=perform(net1,targets,outputs1)
performance2=perform(net2,targets,outputs2)
二十二、神经网络可视化
figure,plotperform(tr1);
figure,plotperform(tr2);
figure, plottrainstate(tr1);
figure, plottrainstate(tr2);
figure,plotregression(targets,outputs1);
figure,plotregression(targets,outputs2);
figure,ploterrhist(errors1);
figure,ploterrhist(errors2);
matlabpool closey=sim(net2,x,'useGPU','yes','showResources','yes');
实验记录
实验总结
1、并行平台的通信模型:
共享数据(POSIX、windows线程、OpenMP)、消息交换(MPIPVM) 并行算法模型:
数据并行模型、任务依赖图模型、工作池模型、管理者-工作者模型、消费者模型对于并行计算一个任务可能涉及到的问题:
任务分解、任务依赖关系、任务粒度分配、并发度、任务交互。
并行算法性能的常见度量值:
并行开销、加速比、效率(加速比/CPU数)、成本(并行运行时间*CPU数)。
2、人工神经网络就是模拟人思维的第二种方式。
这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。
虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。
3、总结:
人工神经网络可通过硬件或软件方式来实现。
硬件方式即神经计算机。
目前较常用的还是软件实现方式。
已有许多公司和研究单位设计了通用的ANN程序以方便人们使用,matlab提供的神经网络工具箱就是其重要代表。
神经网络工具箱是在matlab环境下所开发出来的许多工具箱之一,它是以人工神经网络理论为基础,用matlab语言构造出典型神经网络的激活函数,如S型、线性、竞争层、饱和线性等激活函数,使设计者对所选定网络输出的计算变成对激活函数的调用。
另外,根据各种典型的修正网络权值的规定,加上网络的训练过程,用matlab编写出各种网络设计与训练所涉及的公式运算、矩阵操作和方程求解等大部分子程序,网络的设计者可以根据自己的需要进行调用,免除了自己编写复杂而庞大的算法程序的困扰,集中精力去思考需要解决的问题,提高工作效率和解题质量。
目前matlab几乎完整地概括了神经网络的基本成果,对于各种网络模型,神经网络工具箱集成了多种学习算法,为用户提供了极大的方便。
同时,matlab的其他工具箱也为我们在神经网络工具箱的基础上开发研究模糊与神经网络的结合、神经网络的样条算法等问题提供了辅助手段。