码迷,mamicode.com
首页 > 其他好文 > 详细

卷积转换为矩阵运算中填充数的计算-GEMM

时间:2018-05-24 11:54:36      阅读:621      评论:0      收藏:0      [点我收藏+]

标签:tps   在线   org   矩阵   pad   通道数   jpg   inf   title   

要将卷积操作转换为矩阵乘积的第一步是要做img2col操作,如下图,想详细了解看这里:https://petewarden.com/2015/04/20/why-gemm-is-at-the-heart-of-deep-learning/ 

技术分享图片

 

在执行convertImageTocolumn操作的时候,传入的原始图片Img的大小为3*416*416,填充数为1,stride为1,如果填充的块都为1, 那么将Img变成column形式后,里面会有多少个零呢?答案是14964个,这是程序给出的结果,那么这个是怎么来的呢?首先将14964做质数分解:14963=43*3*2*2*29 ,这里我们发现有3,那么这个3可以看做是三个通道,这样就只需要看14963=3*4988, 一个通道上有4988个零是怎么来的。如下图所示,如果通道大小是3*3,卷积核大小是3*3,填充为1,步长(stride)为1,那么填充后的大小为5*5,现在要用3*3的卷积在其上进行块转换,我们知道转换成块后的大小将是原来大小的9倍。我们来计算5*5的通道上进行块转换后,里面具有0的数量,首先4个角上,每个角上获得的填充数为5,共20个,每一条边上获得的填充数量为3,共4条边,共12个填充,总共为1*3*4+20 = 32个。 以此类推,如果单个通道的大小变为416*416,卷积核依然为3*3,那么每条边上获得的填充数量为(416-3+1)*3 *4+ 4*5 = 4988个,如果通道数量为3,那么就为3*4988=14964。 由此可以得到如下的计算公式:

假设,通道数为C,通道高度为H,通道宽度为W,卷积核大小为K,填充为1,步长为1,假设H=W,那么获得填充数量为:3*[(W-K+1)*3*4 + 5*4].

 

技术分享图片

程序验证:

技术分享图片

 

技术分享图片

 

技术分享图片

 

可以用这个在线质数分解器:http://www.atool.org/quality_factor.php

卷积转换为矩阵运算中填充数的计算-GEMM

标签:tps   在线   org   矩阵   pad   通道数   jpg   inf   title   

原文地址:https://www.cnblogs.com/justinzhang/p/9081459.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!