为了能在性能有限的设备上运行神经网络,需要限制神经网络的大小。
通过在服务器上部署网络的缺点有:
1.延迟太大
2.涉及隐私问题
步骤
1.剪枝
剪掉不重要的参数或者神经元
不重要的参数:比如绝对值比较小的参数
不重要的神经元:输入为0概率较大的神经元
2.再次微调网络(train)
循环进行 1、2
该怎么剪
不适合剪weight
剪掉参数在代码上不容易实现,而且不利于 GPU 并行加速计算
如果只是把不需要的参数置为0,并没有真正的减少计算和内存占用。
剪神经元更合适
代码上容易实现,pytorch只需要减少dim
为什么不直接 train 一个小的 network
(大乐透)假说:大的 network 更容易 train
一种假说:可以直接 train 小的 network