0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何通过张量的降维来降低卷积计算量(CP分解)

YCqV_FPGA_EETre 来源:未知 2019-11-28 17:15 次阅读

引言

在CNN网络中卷积运算占据了最大的计算量,压缩卷积参数可以获得显著的硬件加速器的性能提升。在即将介绍的这篇论文中,作者就是通过张量的降维来降低卷积计算量的。作者通过CP分解将一个4D张量分解成多个低维度的张量,并且最后通过微调参数来提升网络精度。

1 原理

CNN卷积参数可以看做一个4D的张量。其中两个维度是对应一幅feature map的两个空间方向。一个方向对应输入feature map,另外一个维度为输出feature map方向。一个全卷积运算是对应每个输入feature map卷积求和,如图所示。通过CP分解,一个全卷积运算变成了连续多步一维卷积运算。图中S维度是多个输入feature map堆叠成的,dxd是feature map的空间维度。卷积核在feature map两个空间维度进行划窗运动,图中一个绿色方块内的结果求和得到一幅输出feature map中的一个像素点。T是多幅输出feature map堆叠成的。

那么这样的分解如何来保证和全卷积结果的不变呢?其实是要保证kernel不变就行了。然后再通过一些数学变化将全卷积变为连续多步卷积。已知一个二维矩阵可以进行如下分解:

其中R是矩阵A的秩。计算量的降低取决于A的秩,秩越小,那么就可以被分解为更小矩阵,计算量降低的就越大。如果A的秩为其维度d,那么如果保持分解后秩不变,那么计算量是不能减小的,所以关键是看矩阵的秩的大小,秩的大小反映了网络的信息冗余度。将之推广到多维张量,有:

假设A张量维度为n1xn2x…nd,那么通过上述分解,参数量就大为降低,为(n1+n2+…nd)R个。

对于二维矩阵,可以使用SVD方式来计算分解的矩阵。但是当维数大于2,则无法使用这种方式了。作者选择了非线性最下平方差(non-linear least squares)方法,其通过降低L2项来获得分解矩阵。NLS方法计算的1维分解矩阵精度更好。

4D张量分解了,那么如何来将卷积计算分解为多步连续运算呢?一个全卷积运算表示为:

K为卷积核,维度为dxdxSxT。经过分解后卷积核为:

然后通过重新排序可以得到连续多步卷积运算:

2 实验

在字符识别上,作者使用4层卷积网络,在不进行CP降维时,识别精度为91.2%。通过CP降维后,精度降低了1%,但是识别速率提升了8.5倍。

在ALEXNET网络上,CP降维实现了6.6倍速率提升,但是精度只降低了1%。

结论

CP分解降低了权重的秩,进而降低了计算量以及参数总量。多适用于小型的分类网络。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 卷积
    +关注

    关注

    0

    文章

    95

    浏览量

    18409
  • 硬件加速器
    +关注

    关注

    0

    文章

    38

    浏览量

    12636

原文标题:【网络压缩四】CP分解

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    张量计算在神经网络加速器中的实现形式

    引言 神经网络中涉及到大量的张量运算,比如卷积,矩阵乘法,向量点乘,求和等。神经网络加速器就是针对张量运算来设计的。一个神经网络加速器通常都包含一个张量计算阵列,以及数据收发控制,共同
    的头像 发表于 11-02 13:52 2552次阅读
    <b class='flag-5'>张量计算</b>在神经网络加速器中的实现形式

    FFT与DFT计算时间的比较及圆周卷积代替线性卷积的有效性实

    实验二 FFT与DFT计算时间的比较及圆周卷积代替线性卷积的有效性实验:一 实验目的1:掌握FFT基2时间(或基2频率)抽选法,理解其提高减少乘法运算次数提高运算速度的原理。2:掌握FFT圆周
    发表于 12-29 21:52

    利用一全相位对图像进行谱分解

    设计一高低通分解全相位滤波器并完成图像压缩
    发表于 04-06 10:42

    TensorFlow教程|张量的阶、形状、数据类型

    TensorFlow用张量这种数据结构表示所有的数据.你可以把一个张量想象成一个n的数组或列表.一个张量有一个静态类型和动态类型的
    发表于 07-27 18:30

    Cp的定义是什么?如何去计算Cp

    今天在计算风力发电机捕捉风能功率的时候,需要对叶片扫略面积内的风能做个功率效率折减,即Cp系数,Cp的定义如下,即实际利用的风能与输入风能的比例:输入风能是空气密度与风速的函数,可以直接计算
    发表于 07-12 07:51

    如何用麦克斯韦应力张量计算切向力

    提前准备:1、在AnsoftMaxwell中绘制直线电机的二模型;2、选择的处理器是静磁场下;2、在气隙的中间绘制一条直线,命名为gline。接下来将开始介绍如何用麦克斯韦应力张量计算切向力,其
    发表于 09-01 07:10

    怎样通过Modscan32软件测试CP341和计算机的通信

    功能块MODB_341的管脚有哪些?怎样通过Modscan32软件测试CP341和计算机的通信?
    发表于 09-29 07:55

    请问如何用麦克斯韦应力张量计算切向力?

    请问如何用麦克斯韦应力张量计算切向力?
    发表于 10-29 06:36

    卷积神经网络一卷积的处理过程

    inference在设备端上做。嵌入式设备的特点是算力不强、memory小。可以通过对神经网络做量化load和省memory,但有时可能memory还吃紧,就需要对神经网络在memory使用上做进一步优化
    发表于 12-23 06:16

    基于多步分解算法的解卷积混合盲源分离新方法

    基于多步分解算法的解卷积混合盲源分离新方法:该文提出一种基于二阶统计量的时域多步分解算法求解卷积混合盲源分离问题。引入白化处理,将混迭矩阵转变成酉矩阵,同时,根
    发表于 10-29 13:08 26次下载

    实验一 连续时间系统卷积的数值计算

    通过程序设计来实现连续时间系统卷积计算,更深刻的理解卷积的意义。
    发表于 05-23 18:21 1次下载

    基于张量分解的运动想象脑电分类算法刘华生

    基于张量分解的运动想象脑电分类算法_刘华生
    发表于 03-15 08:00 3次下载

    融合朋友关系和标签的张量分解推荐算法

    张量分解推荐算法。首先,利用高阶奇异值分解( HOSVD)方法对用户一项目一标签三元组信息进行潜在语义分析和多路降维,分析用户、项目、标签三者间关系;然后,再结合用户朋友关系、朋友间相似度,修正
    发表于 01-07 09:43 0次下载

    基于TTr1SVD的张量奇异值分解

    。TTrISVD是一种新型的张量分解算法,可以认为该算法是矩阵SVD在张量领域的扩展。实际数据库中图片的图像模态往往是最大的,结合TTrISVD算法,得到张量的高阶奇异值
    发表于 01-16 14:48 1次下载

    稀疏卷积非负矩阵分解的语音增强算法

    鉴于卷积非负矩阵分解在语音增强算法中的成功应用,进一步考虑语音信号在时频域的稀疏性,提出了稀疏卷积非负矩阵分解( Sparse convolutive nonnegative matr
    发表于 03-14 14:02 2次下载