ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

BN剪枝实践

2022-01-06 18:29:59  阅读:244  来源: 互联网

标签:剪枝 stat torch BN vgg 实践 lua 报错 import


1.github代码实践

源代码是lua脚本语言,下载th之后运行

th main.lua -netType vgg -save vgg_cifar10/ -S 0.0001,报错:

 试看看安装lua:

报错了,参考这篇文章:

ubuntu18.04安装lua的步骤 以及 出现的问题_weixin_41355132的博客-CSDN博客

问题解决,安装成功:

情况并没有好转,出现相同的报错(想了一下发现可能前面安装过lua了,好像跟torch啥的包有关):

可能是这个东西没安装:

进到这个里面的INSTALL,发现可能lua版本的torch,cuda,cudnnv4之类的东西没有装,在装torch的时候发现确实下载了Lua相关的组件,但是不知道cuda和cudnn要不要重新安装,cuda看起来安装过程没有什么特别的,cudnn的下载好像需要登录nvidia比较烦人

安装torch:

torch安装好像失败了:

发现有第三方代码用pytorch实现,准备转战:

https://github.com/foolwood/pytorch-slimming

先把torch卸载了:

原Torch实现代码在这里:

后来下载的另一个git在这里:

pytorch实现的剪枝:

 运行main.py,成功下载CIFAR10后报错

是打印结果的这部分有错误(最后一行):(解决,把loss.data[0]的[0]删掉就可以了)

但是突然调试不了了(换了电脑试还是不行,可能试代码的问题,没法调试,一调试就卡死,然后),先注释掉运行之后,显卡转起来了,然后报错:

 发现试test部分出了问题:

test_loss += F.cross_entropy(output, target, size_average=False).data # sum up batch loss   .data[0]

这里把.data[0]给改成了.data就跑起来了 ,到最大epoch的0.5到0.75的时候调整学习率

权重和best权重保存在这里:

开始训练

batch-size=100,每100batch报告一次,10000张图片输出一次,总共50000张图片,epoch=160

GPU:GTX TITAN,12G显存

显存占用:7566MiB / 12187MiB

内存占用:下图

160epoch结果:

精度大概是93.5%

运行完了之后:

运行的时候显存占用约:7560-1358=6202  MiB(batch-size=100)(CIFAR-10)

 查看参数量:

使用第三方工具torchstat

from torchstat import stat
from vgg import vgg


model = vgg()
stat(model,(3,32,32))

直接算了原来vgg的参数量和运算量 :

FLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。

FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。
MACCs:是(multiply-accumulate operations),也叫MAdds,指乘-加操作(点积运算),理解为计算量, 大约是 FLOPs 的一半。

开始稀疏化训练:

s=0.0001

best pred=0.9376000165939331

剪枝

stat参数量:

压缩率:2.88/3.59 = 80.22284122562674%

Flops压缩率:211.17/399.17 = 52.9022722148458%

测验参数量代码:

from torchstat import stat
from vgg import vgg
import torch



checkpoint = torch.load('pruned.pth.tar')   # args.refine存储的是稀疏化训练之后的权重文件
model = vgg(cfg=checkpoint['cfg'])
stat(model,(3,32,32))

Fine-turn:

精度:93.3%

几个小问题:

标签:剪枝,stat,torch,BN,vgg,实践,lua,报错,import
来源: https://blog.csdn.net/epic_Lin/article/details/121831139

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有