转载请注明出处,否则将依法追究版权
全连接层出现在DNN和 CNN中.很多论文[介绍了如何用SVD,VQ,Sparse code压缩全连接层,这些方法不是端到端地训练一个新模型,而是对训练好的模型压缩其全连接层的权重矩阵,在应用实现中则需要同时考虑对权重和偏移的处理. 实际上权重和偏移的维度不相同,处理方法是不同的.本文将系统性地介绍在应用实现中,如何利用下述方法压缩权重矩阵,同时处理与之对应的偏移量,从而实现全连接层压缩的整个过程.
首先深入研究两个相邻全连接层的运算原理,理解权重矩阵 和偏移 的关系.如下图所示,第L层有m个神经元,第(L+1)层有n个神经元,因此相邻两个全连接层的权重矩阵 是一个 的2维矩阵.全连接层输入 与输出 的映射关系是 .即L层所有神经元与第(L+1)层的某个神经元的连接共享同一个偏移量,因此相邻两个全连接层的偏移量是一个1维向量,包含n个元素.
奇异值分解(SVD)压缩算法. 如下图所示,基于SVD的全连接层压缩方法就是引入一个中间层L’,该中间层包含 c个神经元, .因此可以减少连接数和权重规模,权重矩阵规模从 mn减少到(m+n)c ,从而降低运行深度模型的计算和存储需求.
DeepX运用了基于SVD的面向层的压缩技术,处理训练好的模型参数,以减少参数规模,减少模型执行推断时的资源消耗,提高推断速度.具体地,相邻的两个全连接层L和(L+1)分别有m和n个神经元,对相邻两层的权重矩阵 执行SVD运算,即就是 .可以选择最大的c个值来近似权重矩阵,如式(1)所示.
(1)
基于以上分析,就可以直接代码实现了
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦