网站大量收购独家精品文档,联系QQ:2885784924

c++实现maxpooling+利用OpenMP、SIMD优化代码.pdf

c++实现maxpooling+利用OpenMP、SIMD优化代码.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c++实现maxpooling+利⽤OpenMP、SIMD优化代码 1.概述 最近接触了⼀个问题,如何⽤c++去实现图像中 maxpooling操作,在⽹上找了⼀些资料,发现只有⼀些简单 实现算法,这些算法实际 运⾏复杂度较⾼。因此,本⽂,探究了如何利⽤c++ 多线程 (OpenMP)、 “⼀条指令操作多个数据” ()等⽅向出发,优化 maxpooling操作。 2. maxpooling 参考博客中 理解,整个图⽚被不重叠 分割成若⼲个同样⼤⼩ ⼩块 (pooling size)。每个⼩块内只取最⼤ 数字,再舍弃其他节点 后,保持原有 平⾯结构得出 output。 在这篇⽂章中设定最⼤池化操作 参数kernel_size=3,stride=2,padding= 1 (在图像周围填充⼀格0),那么在输⼊矩阵src1为 : 1 1 2 4 5 6 7 8 3 2 1 0 1 2 3 4 最⼤池化 结果应该为 6 8 6 8 3.pytorch实现和c++实现 pytorch c++(版本 1) 1 //求maxpooling操作 2 vectorvectorvectorvectorint maxpooling(){ 2 vectorvectorvectorvectorint maxpooling(){ 3 int atch = src1.size() ; int channel = src1[0].size() ; 4 int height=src1[0][0].size() ; int width=src1[0][0][0].size() ; 5 int out_ h = (height-3+2)/2, out_w = (width-3+2)/2 ; 6 int mod_ h = (height-3+2)%2, mod_w =(width-3+2)%2 ; 7 if (mod_ h != 0) out_ h++; 8 if (mod_w != 0) out_w++; 9 10 //先填充 11 vectorvectorvectorvectorint pad_ map; 12 for(int =0; atch; ++){ 13 vectorvectorvectorint c_tmp; 14 for(int c=0;cchannel;c++){ 15 vectorvectorint h_tmp(height+2,vectorint(width+2,0)) ; 16 for(int h=0;hheight+2 ;h++){ 17 for(int w=0;wwidth+2 ;w++){ 18 if(h=1hh

文档评论(0)

181****7662 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档