首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有办法改变毕道尔的卷积方法?(还是在其他框架中?)

是否有办法改变毕道尔的卷积方法?(还是在其他框架中?)
EN

Stack Overflow用户
提问于 2020-12-31 08:18:50
回答 1查看 125关注 0票数 1

目前,我们正在C++中为ARM开发一种优化的卷积算法。我们在ARM开发板上使用Ubuntu18.04作为aarch64,确切地说是Odroid N2+。

测试算法与其他流行的方法(im2col+gemm,FFT,Winograd.)我们在我们的开发环境中下载Pytorch,并在本地编译了它的C++ API。但不幸的是,似乎没有办法从给定的API中改变卷积算法。

有没有一种方法可以改变Pytorch中的卷积算法?(或者是火炬?)如果没有,是否有其他框架或API为我们的环境提供不同卷积算法的优化实现?(ARMv8、aarch64、C++)

EN

回答 1

Stack Overflow用户

发布于 2022-10-30 01:13:33

我们有一些修改CNN平台的经验。对于不依赖于方向的模式识别任务,一种优化的计算方法是对所有卷积层使用对称核,并将第一平坦层替换为合并卷积层(参见“通过对称元算子进行变换的相同和不变的卷积神经网络TI-CNN”)。我们在Caffe、PyTorch和Darknet (GPU & CPU)平台上成功地实现了快速算法,方法是改变im2col+gemm (2-6倍)和FFT (~1.5 )码,并使用一小部分内存缓冲区( dih4对称内核)。对于3x3核,使用dih4核的朴素卷积对每个矩阵乘法只需3次乘法,因此Winograd没有优势,在对称核模式下也不需要。Tensorflow GPU卷积过程使用cuDNN库进行im2col+gemm,不能改变其im2col。但是我们可以强迫它的所有内核都是对称的(无论是在C++或python级别),但是如果使用旋转数据增强,除了将0-360度降低到0-45度(当使用dih4对称核时,其他7种角段的楔形与0-45度相同),计算和内存就无法节省。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65518357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档