Neural network Caffe-如何从经过培训的Caffe模型中删除不需要的连接?

Neural network Caffe-如何从经过培训的Caffe模型中删除不需要的连接?,neural-network,deep-learning,caffe,pycaffe,Neural Network,Deep Learning,Caffe,Pycaffe,我训练了一个fastercnn模型,用caffe检测图像中的人脸。我目前的型号是530MB。我想缩小我模型的尺寸,所以我找了宋汉 在我的模型中,我使用Pycaffe将不太重要的权重更新为0。模型大小现在还没有减小,如何从经过训练的caffe模型中删除那些无关紧要的连接,从而减小模型的大小?因为caffe中的Blob数据类型(数值数组的基本“容器”)不支持“稀疏”表示,用零替换权重不会改变存储复杂性:caffe仍然需要空间来存储这些零。这就是为什么您看不到模型大小的减小 为了修剪连接,您必须确保零

我训练了一个fastercnn模型,用caffe检测图像中的人脸。我目前的型号是530MB。我想缩小我模型的尺寸,所以我找了宋汉


在我的模型中,我使用Pycaffe将不太重要的权重更新为0。模型大小现在还没有减小,如何从经过训练的caffe模型中删除那些无关紧要的连接,从而减小模型的大小?

因为caffe中的
Blob
数据类型(数值数组的基本“容器”)不支持“稀疏”表示,用零替换权重不会改变存储复杂性:caffe仍然需要空间来存储这些零。这就是为什么您看不到模型大小的减小

为了修剪连接,您必须确保零遵循某种模式:例如,
“InnerProduct”
的整行为零-您可以消除前一层的一维,等等

这些修改可以使用网络手术小心地手动进行。阅读更多关于它的信息(本例实际上是关于添加连接的,但是您可以应用相同的步骤来修剪连接)

您可能会发现这对于降低模型复杂度很有用。

很好地解释了为什么您的模型大小没有减小

作为补充,要使权重更稀疏以获得模型大小的压缩,可以尝试


其主要思想是在损失函数中添加一些正则化器,这些正则化器实际上是按
通道
等分组的权重的
L2范数
(假设层的权重具有形状
(num_out,channel,row,column)
)。在训练过程中,这些正则化器可以使同一组中的权重均匀衰减,因此权重变得更加稀疏,更容易消除整行、整列甚至整条通道中的权重。

看看ICCV 2017,这是一种优雅的算法,可以有效地修剪每一层通道。在its中,有一个删除不必要神经元的剪枝过程,这有助于减少模型大小和加速预测。

你确定这是
L2
组的正常值吗?通常,
L1
norm鼓励稀疏。。。它是
L2
L1的规范(也称为“混合规范”)?@Shai它是
L2的规范,即论文中的
组套索规范()。它与减肥中的
L1
norm(体重衰减)结合使用。谢谢!事实上,通过适当使用正则化,您可以获得非常有趣的效果。谢谢你有趣的推荐。@Shai同意你的看法。:)是否有任何方法可以将权重的数据类型从'float32'更改为'float16',从而减小模型尺寸?