从 DBPN(Pytorch) 导出模型训练参数

在超分辨重建《DBPN-Pytorch-master》包中有已经训练好的模型,这个DBPN好象是“2018超分辨率 8 倍的冠军”。

所以风格迁移就先放一放,把这个DBPN超分辨用C++实行一下。

先安装好 Pytorch

运行 python eval.py 或者 eval_gan.py,就可以用该超分辨了。

输入图

eval_gan.py 4倍  运行时间: 348.8485 秒(CPU)

8倍非常费内存,输入图缩小一些

输入图

eval.py 8倍  运行时间: 157.8425 秒(CPU)

 

导出模型中所有的训练参数(在载入模型参数后处加入代码,按caffe格式):

#---------------------------------------->
# 移除字符串 `module.` 
model.load_state_dict({k.replace('module.',''):v for k,v in torch.load(opt.model, map_location=lambda storage, loc: storage).items()})
#----------------------------------------<
print('预先训练的SR模型已加载.')

#------------------------------------------------------------->
#导出模型中所有的可训练参数
#遍历named_parameters()中的所有的参数,只打印那些param.requires_grad=True的变量。
fp = open('PIRM2018_region2.pth_x4model.txt', 'w')
for name, param in model.named_parameters():
    print(name)
    fp.write(name) #层名
    fp.write('\n')


    if param.requires_grad:

        fp.write('{\n')

        #维度顺序应该和torch一样吧,不用转换
        v_1d=param.view(-1) #直接转为一维
        fp.write('  blobs {\n')

        for vv in v_1d:

            fp.write('%8f' % vv) # '    data: %8f'

            fp.write('\n')

        fp.write('    shape {\n')

        for s in param.size():

            fp.write('      dim: ' + str(s))# 维度

            fp.write('\n')

        fp.write('    }\n')
        fp.write('  }\n')
        fp.write('}\n')

fp.close()
os.system("pause")

#-------------------------------------------------------------<

已经成为一个154M的文件了:

feat0.conv.weight
{
  blobs {
0.281878
-0.380647
0.184301
省略...
0.051228
-0.140397
-0.387719
    shape {
      dim: 256
      dim: 3
      dim: 3
      dim: 3
    }
  }
}
feat0.conv.bias
{
  blobs {
-0.019276
-0.055616
0.008202
省略...
-0.011527
-0.050689
0.050540
    shape {
      dim: 256
    }
  }
}
feat0.act.weight
{
  blobs {
0.780346
    shape {
      dim: 1
    }
  }
}
feat1.conv.weight
{
  blobs {
0.060832
-0.090450
0.080900
省略...

先这样吧

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值