您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 科学计算与数据处理综合设计实验四
1科学计算与数据处理实验报告学号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);二、打开MATLABworkersmatlabpoolopen检查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')2t=x(1,:).*x(2,:)+2*(x(1,:)+x(2,:));save(['target'num2str(i)],'t');clearxtend六、实现并行运算加载数据集fori=1:matlabpool('size')data=load(['inputs'num2str(i)],'x')xc{i}=data.xdata=load(['target'num2str(i)],'t')tc{i}=data.t;cleardataendnet2=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=gpuDeviceCountgpu1=gpuDevice(1)gpuCores1=gpu1.MultiprocessorCount*gpu1.SIMDWidthnet2=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)@163.com十、清空环境变量clearallclcwarningoff3十一、打开matlabpoolmatlabpoolopenpoolsize=matlabpool('size');十二、加载数据loadbodyfat_datasetinputs=bodyfatInputs;targets=bodyfatTargets;十三、创建一个拟合神经网络hiddenLayerSize=10;隐藏层神经元个数为10net=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';Meansquarederror十八、设置网络可视化函数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;4disp(['并行神经网络的训练时间为',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);matlabpoolclosey=sim(net2,x,'useGPU','yes','showResources','yes');实验记录5678实验总结1、并行平台的通信模型:共享数据(POSIX、windows线程、OpenMP)、消息交换(MPIPVM)并行算法模型:数据并行模型、任务依赖图模型、工作池模型、管理者-工作者模型、消费者模型对于并行计算一个任务可能涉及到的问题:任务分解、任务依赖关系、任务粒度分配、并发度、任务交互。并行算法性能的常见度量值:并行开销、加速比、效率(加速比/CPU数)、成本(并行运行时间*CPU数)。2、人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。3、总结:人工神经网络可通过硬件或软件方式来实现。硬件方式即神经计算机。目前较常用的还是软件实现方式。已有许多公司和研究单位设计了通用的ANN程序以方便人们使用,matlab提供的神经网络工具箱就是其重要代表。神经网络工具箱是在matlab环境下所开发出来的许多工具箱之一,它是以人工神经网络理论为基础,用matlab语言构造出典型神经网络的激活函数,如S型、线性、竞争层、饱和线性等激活函数,使设计者对所选定网络输出的计算变成对激活函数的调用。另外,根据各种典型的修正网络权值的规定,加上网络的训练过程,用matlab编写出各种网络设计与训练所涉及的公式运算、矩阵操作和方程求解等大部分子程序,网络的设计者可以根据自己的需要进行调用,免除了自己编写复杂而庞大的算法程序的困扰,集中精力去思考需要解决的问题,提高工作效率和解题质量。目前matlab几乎完整地概括了神经网络的基本成果,对于各种网络模型,神经网络工具箱集成了多种学习算法,为用户提供了极大的方便。同时,matlab的其他工具箱也为我们在神经网络工具箱的基础上开发研究模糊与神经网络的结合、神经网络的样条算法等问题提供了辅助手段。
本文标题:科学计算与数据处理综合设计实验四
链接地址:https://www.777doc.com/doc-1455860 .html