如何理解Winograd卷积

im2col

首先,我们来看一种快速的卷积方法:im2col
顾名思义,就是把image转换成col,方便矩阵相乘;
在这里插入图片描述
如上图所示,把待卷积的卷积核展开成行向量,把待卷积的图像块展开成列向量,二者相乘即可得到卷积后的结果.
例如,如果大小为[227x227x3]步幅4和填充0的输入与11x11x3滤波器进行卷积,那么我们将在输入中采样[11x11x3]像素块并将每个像素块拉伸为大小 11 * 11 * 3 = 363的列向量。
对于具有步幅4和填充0的大小为227的输入,沿宽度和高度会有((227-11)/ 4)+1 = 55个结果位置,得到尺寸为[363×3025]的输出矩阵X_col。这里的每列都是伸展的感受野,总共有55 * 55 = 3025个。
CONV层的权重以类似的方式伸展成行。例如,如果有96个大小为[11x11x3]的过滤器,则会得到一个大小为[96 x 363]的矩阵W_row(11x11x3 = 363)。
在这里插入图片描述
在转换图像和内核之后,卷积可以实现为简单的矩阵乘法,在我们的例子中,W_col [96 x 363]乘以X_col [363 x 3025]得到的矩阵[96 x 3025],最后reshape为[55x55x96]。
2.Winograd算法
假设我们有输入图像f大小为4和 过滤器大小为3。
在这里插入图片描述
然后,使用上面介绍的im2col函数将输入图像转换为:
在这里插入图片描述
那么,Winograd怎样才能进一步提高速度呢?它舍弃使用点积,而是使用下面的公式计算结果矩阵。
在这里插入图片描述
也就是:
在这里插入图片描述

重点开来了!!!下面进行拆解:
在这里插入图片描述
关于g的参数计算是可以提前计算的,
这里经过拆解过后,m1+m2+m3=d0g0+d1g1+d2g2
m2-m3-m4=d1
g0+d2g1+d3g2
但是比起im2col用了6次乘法,这里只用了4次乘法,乘法次数减少了1.5倍
这样我们就可以得到m1,m2,m3,m4的值。然后用它们来计算卷积而无需计算矩阵的点积。明显,经过这样的变换后,在每个卷积运算时不需要多次计算(g0 + g1 + g2)/ 2和(g0-g1 + g2)/ 2的值,因为滤波器的值是一样的。我们可以在训练网络期间在卷积之前计算一次,并且可以在推理期间预先计算保存。

使用这个算法,我们需要 4次 ADD和4次 MUL操作计算m1,m2,m3,m4,然后基于计算好的m1,m2,m3,m4的值,使用4 个ADD操作得到结果。而在进行普通的点积时,我们将进行6次MUL操作而不是4次。明显Winograd可以将计算成本高昂的MUL操作减少1.5倍,这对速度的提高是非常重要的。
在上面的例子中,我使用了F(4,3),即f(4)和g(3),它需要2次卷积。最小1D算法 F(m,r)与其自身嵌套以获得最小2D算法F(mxm,rxr)。如果我们尝试使用f(4,4)和g(3,3),这需要4次卷积,Winograd算法使用4 * 4 = 16个MUL,对比普通的卷积使用2 * 2 * 9 = 36个MUL,这样可以将MUL减少2.25倍。
参考文章:https://zhuanlan.zhihu.com/p/74567600

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值