资源描述:
《科学计算与数据处理综合设计实验四》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
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)
2、;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,
3、'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')7t=x(1,:).*x(2,:)+2*(x(1,:)+x(2,:));save(['target'num2str(i)],'t'
4、);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
5、=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','showResourc
6、es','yes');Matlab神经网络43个案例分析九、并行运算与神经网络-基于CPU/GPU的并行神经网络运算by王小川(@王小川_matlab)http://www.matlabsky.comEmail:sina363@163.comhttp://weibo.com/hgsz2003十、清空环境变量clearallclcwarningoff7十一、打开matlabpoolmatlabpoolopenpoolsize=matlabpool('size');十二、加载数据loadbodyfat_dataset
7、inputs=bodyfatInputs;targets=bodyfatTargets;十三、创建一个拟合神经网络hiddenLayerSize=10;隐藏层神经元个数为10net=fitnet(hiddenLayerSize);创建网络十四、指定输入与输出处理函数(本操作并非必须)net.inputs{1}.processFcns={'removeconstantrows','mapminmax'};net.outputs{2}.processFcns={'removeconstantrows','mapmin
8、max'};十五、设置神经网络的训练、验证、测试数据集划分net.divideFcn='dividerand';随机划分数据集net.divideMode='sample';划分单位为每一个数据net.divideParam.trainRatio=70/100;训练集比例net.divideParam.valRatio=15/100;验证集比例net.dividePara