VGGNet深度剪枝:实现3MB模型的完整训练到微调流程

版权申诉
5星 · 超过95%的资源 16 下载量 52 浏览量 更新于2024-10-07 1 收藏 871.17MB ZIP 举报
资源摘要信息:"VGGNet剪枝实战:使用VGGNet训练、稀疏训练、剪枝、微调等,剪枝出只有3M的模型" 知识点: 1. VGGNet模型介绍:VGGNet是一种深度卷积神经网络模型,由牛津大学的视觉几何组提出,其网络结构相对简单,主要由卷积层和池化层构成,具有深层的网络结构,能有效提高图像识别的准确率。VGGNet在图像分类、目标检测、图像分割等任务中得到了广泛的应用。 2. 稀疏训练:稀疏训练是指在训练过程中,通过引入稀疏因子,使得网络的权重稀疏化。这种方法可以减少模型的存储和计算需求,同时也可以防止过拟合。在BN层中加入稀疏因子,可以使得BN层的权重稀疏化。 3. BN层(Batch Normalization): BN层是一种用于改善网络训练的技巧,它可以加快训练速度,减少对初始化的敏感度,提高模型的泛化能力。BN层通过对每个小批量数据进行归一化处理,使得输入数据的均值为0,方差为1,从而使得网络更加稳定。 4. 权重排序和阈值选择:对稀疏训练后的模型中所有BN层权重进行统计排序,然后根据设定的保留BN层数量确定权重阈值thres。权重大于thres值的设为1,权重小于thres值的设为0,用于制作mask。 5. mask制作:mask是一种用于模型剪枝的工具,它用于标识模型中哪些权重是重要的,哪些是可以被删除的。在这个过程中,遍历模型中的BN层权重,根据权重是否大于阈值thres来制作各层的mask。 6. 剪枝操作:剪枝操作是根据mask制作新的模型结构,保留各层中权重大于阈值的通道数。然后获取BN层权重mask非零值的索引,非零索引对应的原始conv层、BN层、linear层各通道的权重、偏置等值赋值给新模型各层。 7. 微调(fine-tune):微调是在剪枝操作后,对剪枝后的模型进行进一步的训练。这一步骤可以帮助模型恢复一些因为剪枝而丢失的性能,同时也可以使模型更加适应特定的任务。 8. 模型压缩:模型压缩主要是为了减小模型的大小和加快模型的运行速度,使得模型可以在计算资源有限的设备上运行,如手机、平板等。剪枝是模型压缩的一种常用技术,通过去除模型中不重要的权重,可以显著减小模型的大小。 通过以上知识点,我们可以了解到,VGGNet剪枝实战中,首先是通过稀疏训练使得BN层稀疏化,然后根据BN层权重排序制作mask,接着进行剪枝操作构建新的模型结构,最后进行微调以恢复模型性能。这种方法可以使得VGGNet模型从原始的数十MB大小压缩到只有3MB,大幅降低了模型的存储和计算需求,使其可以在计算资源有限的设备上运行。