具有深度学习功能的循环优化

1view (last 30 days)
你好,
I am trying to optimize the following code, which performs the deep learning convolutions on input arrays:
parfork = 1:500%number of images
为了j = 1:8相关过滤器的频道数量%
dldf_o_dlconv3_temp_1(:,:,:,j,k)= dlConv(dlarray(reshape(o_maxpool2(:o_maxpool2(:,:,:,j,k)),[8 8 1]),[8 8 1]),'SSC'),dlarray(reshape(DLDO_O_dlconv3(:,:,1,k),[8 8 1]),'SSC'),0,'填充',填充);%第一过滤器
dldf_o_dlconv3_temp_2(:,:,:,j,k)= dlConv(dlarray(reshape)(o_maxpool2(:,:,:,:,j,k),[8 8 1]),[8 8 1]),,'SSC'),dlarray(reshape(dldo_o_o_dlconv3(:,:::,:,2,k),[8 8 1]),'SSC'),0,'填充',填充);%第二滤波器
dldf_O_dlconv3_temp_3(:,:,j,k)=dlconv(dlarray(reshape(O_maxpool2(:,:,j,k),[8 8 1]),'SSC'),dlarray(reshape(dldo_o_o_dlconv3(:,:::,:,3,k),[8 8 1]),'SSC'),0,'填充',填充);%第三滤波器
dldf_o_dlconv3_temp_4(:,:,:,j,k)= dlConv(dlarray(reshape(o_maxpool2(:,:,:,:,j,k),[8 8 1]),[8 8 1]),,'SSC'),dlarray(reshape(dldo_o_o_dlconv3(:,:::,:,4,k),[8 8 1]),'SSC'),0,'填充',填充);%4th filter
dldf_o_dlconv3_temp_5(:,:,:,j,k)= dlConv(dlarray(reshape(o_maxpool2(:o_maxpool2(:,::,:,j,k)),[8 8 1]),[8 8 1]),,'SSC'),dlarray(reshape(DLDO_O_dlconv3(:,:,5,k),[8 8 1]),'SSC'),0,'填充',填充);%第五滤波器
dldf_o_dlconv3_temp_6(:,:,:,j,k)= dlConv(dlarray(reshape(o_maxpool2(:,:,:,:,j,k),[8 8 1]),[8 8 1]),'SSC'),dlarray(reshape(dldo_o_o_dlconv3(:,::,:,6,k),[8 8 1]),'SSC'),0,'填充',填充);%第六滤波器
dldf_o_dlconv3_temp_7(:,:,:,j,k)= dlConv(dlarray(reshape(o_maxpool2(:o_maxpool2(:,::,:,j,k)),[8 8 1]),[8 8 1]),,'SSC'),dlarray(reshape(dldo_o_o_dlconv3(:,:::,:,7,k),[8 8 1]),'SSC'),0,'填充',填充);%第7滤波器
dldf_o_dlconv3_temp_8(:,:,:,j,k)= dlConv(dlarray(reshape(o_maxpool2(:o_maxpool2(:,::,:,j,k)),[8 8 1]),[8 8 1]),,'SSC'),dlarray(reshape(dldo_o_o_dlconv3(:,:::,:,8,k),[8 8 1]),'SSC'),0,'填充',填充);%8th滤波器
结尾
结尾
As you can see, I am already using the parfor loop. I tried using GPU arrays with O_maxpool2 and DLDO_O_dlconv3 ,但是我认为没有加快任何速度,如果有的话,它会变得更慢。我的GPU设备详细信息如下:
CUDADevicewith properties:
姓名:'GeForce RTX 2080 Ti'
Index: 1
计算能力:'7.5'
SupportsDouble: 1
驱动程序:2000年11月
工具包:11
MaxThreadSperBlock:1024
MaxShmemPerBlock: 49152
MaxThreadBlocksize:[1024 1024 64]
MaxGridSize:[2.1475E+09 65535 65535]
simdwidth:32
总成员:1.1811E+10
AvailableMemory: 9.4411e+09
多处理器:68
clockratekhz:1545000
ComputeMode:'Default'
gpuoverlapstransfers:1
kernelexecutionTimeout:1
canmaphostmemory:1
DeviceSupported: 1
Deviceavailable:1
DeviceSelected: 1
请让我知道我是否还有其他事情可以加快此代码的速度,以及为什么使用GPUarrays没有加快它的原因。
非常感谢。

接受的答案

Joss Knight
Joss Knight 2021年6月24日
Edited:Joss Knight 2021年6月24日
dlconv 旨在与多个输入通道,多个过滤器和单个呼叫中的多个输入观测值进行批量工作。读 DLCONV的文档
1条评论
弧度
弧度 2021年6月28日
非常感谢...即使这并不直接我要做的事情(这就是为什么我必须使用forloops),但是您的评论使我想到了如何利用DLCONV的内置功能来删除循环,在重塑了我的数据之后,我就可以做到这一点。再次感谢。

登录发表评论。

更多答案(0)

标签

s manbetx 845


Release

R2021A

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

Start Hunting!