用SVD压缩深度模型(DNN,CNN)的全连接层(fully-connected layer)
来源:互联网 发布:网络言情小说作家 编辑:程序博客网 时间:2024/05/18 03:17
转自:https://my.oschina.net/liusicong/blog/866364
转载请注明出处,否则将依法追究版权
全连接层出现在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)
基于以上分析,就可以直接代码实现了
- 用SVD压缩深度模型(DNN,CNN)的全连接层(fully-connected layer)
- 深度学习 15. 全连接和区域连接,fully connected 和 local connected, 解释说明(最简单的解释)
- fully connected layer as 1x1 convolution
- CNN中全连接层是什么样的?
- CNN中全连接层是什么样的?
- 深度神经网络(DNN)、卷积神经网络(CNN)、循环神经网络(RNN)(神经网络的基础知识)
- 为什么使用卷积层替代CNN末尾的全连接层
- 为什么使用卷积层替代CNN末尾的全连接层
- 深度学习:CNN RNN DNN 区别 卷积层或是LSTM单元
- 深度学习笔记6:全连接层的实现
- 深度学习笔记6:全连接层的实现
- 深度学习笔记6:全连接层的实现
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?(知呼回答)
- 深度学习: Full Connection (全连接层)
- Caffe 代码解读之全连接层 inner product layer
- Caffe 代码解读之全连接层concat layer
- caffe训练好模型的特征提取(fc7,最后一层全连接层)
- Tensorflow CNN(两层卷积+全连接+softmax)
- 【Python】Matplotlib画图(十一)——箱线图
- GridControl导出Excel(WPF)
- mysql存储过程执行时发生Error Code: 1267. Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_gener
- Android/Java网络加载框架Retrofit(二)load bitmap into ListView
- cdq分治
- 用SVD压缩深度模型(DNN,CNN)的全连接层(fully-connected layer)
- 产品流程
- 【开始】总要写点啥
- 添加图片水印
- nginx 静态资源访问配置
- Greenplum 分区表介绍
- HDU 1385 Minimum Transport Cost(floyd)(记录路径)
- Windows 下单机最大TCP连接数
- Java软件工程师 (职业简介)