# 剪枝
* [1 原因](#1原因)
* [2 步骤](#2步骤)
* [3 方法](#3方法)
## 1原因
研究表明网络中很多连接都是接近0或者冗余的,如何对这些参数进行稀疏就变的很有意义。如下图所示是SVD分解的算法性能对比。SVD分解可以从模型压缩和提高运算速度两个方面进行优化。
但是并不是只要剪枝就一定会提高运算速度。原因是如果剪枝过于随机,并不能有效提升运算速度。所以需要结构化剪枝(structured pruning)。
## 2步骤
剪枝一般需要如下图左的三个步骤:先在原始的网络结构下训练网络,然后通过设置一个阈值,把一些权值较小的连接进行剪枝,重新训练权重,对训练好的模型再剪枝,再重新训练,直到满足设定条件为止。
## 3方法
- **说明**: 简化网络主要考虑结构剪枝。还有一个概念是结构化剪枝。虽然仅有一字之差,但是结构剪枝和结构化剪枝是两个不同的概念。结构剪枝是指对网络结构进行修剪,而结构化剪枝是属于结构剪枝的一种具体方法,指按照特定的结构(相对于随机)进行剪枝。
- 结构剪枝一共有3种方法:
第一种方法是稀疏连接,本来一个网络里有很多连接的,其基本思想是去除不重要的连接,让这个连接变稀疏。虽然它可以减少网络的模型大小,但是不一定能够减少网络的运行时间。
第二种就是张量分解的方法,就是把一个卷积网络参数矩阵通过张量分解,用它的低秩特性做逼近。
第三种是channel 剪枝,就是训练好一个网络后,简单粗暴的把一些channel 去掉。
# 表格示例
p ap map tp fp
<table>
<tr>
<th width=10%, bgcolor=yellow >参数</th>
<th width=40%, bgcolor=yellow>详细解释</th>
<th width="50%", bgcolor=yellow>备注</th>
</tr>
<tr>
<td bgcolor=#eeeeee> -l </td>
<td> use a long listing format </td>
<td> 以长列表方式显示(显示出文件/文件夹详细信息) </td>
</tr>
<tr>
<td bgcolor=#00FF00>-t </td>
<td> sort by modification time </td>
<td> 按照修改时间排序(默认最近被修改的文件/文件夹排在最前面) </td>
<tr>
<td bgcolor=rgb(0,10,0)>-r </td>
<td> reverse order while sorting </td>
<td> 逆序排列 </td>
</tr>
</table>