Network Pruning 网络剪枝

225 阅读1分钟

为了能在性能有限的设备上运行神经网络,需要限制神经网络的大小。
通过在服务器上部署网络的缺点有:
1.延迟太大
2.涉及隐私问题

步骤

1.剪枝

剪掉不重要的参数或者神经元
不重要的参数:比如绝对值比较小的参数
不重要的神经元:输入为0概率较大的神经元

2.再次微调网络(train)

循环进行 1、2

该怎么剪

不适合剪weight

剪掉参数在代码上不容易实现,而且不利于 GPU 并行加速计算
如果只是把不需要的参数置为0,并没有真正的减少计算和内存占用。

剪神经元更合适

代码上容易实现,pytorch只需要减少dim

为什么不直接 train 一个小的 network

(大乐透)假说:大的 network 更容易 train
一种假说:可以直接 train 小的 network

image.png