位置: IT常识 - 正文

pytorch对已有模型的更改(常用的操作)(pytorch model.module)

编辑:rootadmin
pytorch对已有模型的更改(常用的操作)

推荐整理分享pytorch对已有模型的更改(常用的操作)(pytorch model.module),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:pytorch有哪些模型,pytorch model.predict,pytorch_model.bin,pytorch model.predict,pytorch_model.bin,pytorch modules,pytorch model.parameters,pytorch model.module,内容如对您有帮助,希望把文章链接给更多的朋友!

本文会做经常性的更改,如有错误或者其他补充的,请各位大佬不吝指点。

如图所示为我们的示例输出的网络结构。

引入创建的模型:

import torchimport simple_modulemod = simple_module.Module()

一、模型的保存与读取

1.整个模型的保存与读取

# 保存整个模型torch.save(mod, '../parameters/mod.pth')# 读取整个模型mod_load = torch.load('../parameters/mod.pth')

2.模型参数的保存与读取(以字典方式保存和读取)

# # 保存模型的参数(以字典的方式保存)torch.save(mod.state_dict(), '../parameters/mod_parameter.pth')# 查看保存了哪些参数print(mod.state_dict().keys())print(mod.state_dict()['feature.0.0.bias'])# 读取模型的参数(以字典的方式读取)mod.load_state_dict(torch.load('../parameters/mod_parameter.pth'))odict_keys(['feature.0.0.weight', 'feature.0.0.bias', 'feature.0.1.weight','feature.0.1.bias', 'feature.0.1.running_mean', 'feature.0.1.running_var', 'feature.0.1.num_batches_tracked', 'feature.1.0.weight', 'feature.1.0.bias', 'feature.1.1.weight', 'feature.1.1.bias', 'feature.1.1.running_mean', 'feature.1.1.running_var', 'feature.1.1.num_batches_tracked', 'classifier.1.weight','classifier.1.bias'])tensor([-0.1721, -0.1222, 0.1023, -0.1484, -0.0547, -0.1922, -0.0796, -0.1784, -0.0233, -0.0271, -0.1018, 0.1875])pytorch对已有模型的更改(常用的操作)(pytorch model.module)

二、模型更改某一层

# 模型修改某一层mod.classifier[1] = torch.nn.Linear(in_features=3072, out_features=20, bias=True)

三、模型删除某些层

# 删除某一层,可以将该层设置为空序列mod.classifier[1] = torch.nn.Sequential()# 可以采用切片的方式删除,这样删除更加彻底mod.classifier = torch.nn.Sequential(*list(mod.classifier.children())[:-1])# 或者直接删除mod.classifier.__delattr__('1')

四、模型添加层(貌似只能在某一个块的末尾添加,后续再查找资料,有大佬可以指点一下)

# 模型添加层mod.classifier.add_module(name='liner', module=torch.nn.Linear(in_features=3072, out_features=100, bias=True))

五、冻结某些层,使得训练时不进行参数更行

1.冻结某一层

# 冻结某一层mod.feature[0][0].weight.requires_grad = False

2.冻结所有的参数

# 冻结所有的参数for param in mod.parameters(): param.requires_grad = False

3.冻结前面某部分的参数,可先将参数名称罗列出来,然后选择一部分的参数名称,利用参数的名称进行冻结。这种方式可以任意地冻结自己想要冻结的层。

no_grad = []for name, value in mod.named_parameters(): # print(name) no_grad.append(name)no_grad = no_grad[:-4]for name, value in mod.named_parameters(): if name in no_grad: value.requires_grad = False else: value.requires_grad = True

 4.还有一种方式,就是只冻结前面几层

i = 0for name, value in mod.named_parameters(): value.requires_grad = False i = i + 1 if i == 4: break;

或者

model_parameters = model.named_parameters()for i in range(freeze): name, value = next(model_parameters) value.requires_grad = False

这是我目前想到的一个方法,还有其他方法的请大佬不吝指点。 

无论哪种方式,都是将对应层的weight的requires_grad设置为False。

5.最后还需要给优化器设置过滤器

# 定义一个fliter,只传入requires_grad=True的模型参数optimizer = optim.SGD(filter(lambda p : p.requires_grad, mod.parameters()), lr=1e-2)
本文链接地址:https://www.jiuchutong.com/zhishi/288943.html 转载请保留说明!

上一篇:vue表单验证rules以及validator验证器的使用(vue表单验证数字)

下一篇:厄勒布鲁附近湖上的仲夏之光,瑞典 (© Anders Jorulf/Getty Images)(厄勒布鲁赛程500)

  • sonypsp3000说明书(sonypsp3000)(sonypsp3006怎么使用)

    sonypsp3000说明书(sonypsp3000)(sonypsp3006怎么使用)

  • 小米手机微信红包提醒怎么设置(小米手机微信红包自动领取设置)

    小米手机微信红包提醒怎么设置(小米手机微信红包自动领取设置)

  • 空间怎么设置访问权限(空间怎么设置访客不可见)

    空间怎么设置访问权限(空间怎么设置访客不可见)

  • 小米手机分身有什么作用(小米手机分身有什么好处和坏处)

    小米手机分身有什么作用(小米手机分身有什么好处和坏处)

  • 苹果双卡的手机(苹果双卡的手机流量怎么样分开用)

    苹果双卡的手机(苹果双卡的手机流量怎么样分开用)

  • 美团我的钱包为什么打不开(美团我的钱包为何打不开)

    美团我的钱包为什么打不开(美团我的钱包为何打不开)

  • vivos6有视频美颜功能吗(vivos6视频聊天美颜设置)

    vivos6有视频美颜功能吗(vivos6视频聊天美颜设置)

  • 苹果x屏幕出现一条绿线可以修复吗(苹果换屏幕后屏幕乱跳)

    苹果x屏幕出现一条绿线可以修复吗(苹果换屏幕后屏幕乱跳)

  • 8g和12g运行内存差距大吗(8g运行内存和12g运行内存哪个用的久)

    8g和12g运行内存差距大吗(8g运行内存和12g运行内存哪个用的久)

  • 什么叫有线网和无线网(什么叫有线网和无线网络)

    什么叫有线网和无线网(什么叫有线网和无线网络)

  • 苹果哪几款支持nfc(苹果哪几款支持快充)

    苹果哪几款支持nfc(苹果哪几款支持快充)

  • 奇异果视频是爱奇艺吗(奇异果视频官网)

    奇异果视频是爱奇艺吗(奇异果视频官网)

  • wds未开启能上网吗(wds未开启怎么办)

    wds未开启能上网吗(wds未开启怎么办)

  • 旗舰机是什么意思(旗舰机是什么意思看完你就明白了)

    旗舰机是什么意思(旗舰机是什么意思看完你就明白了)

  • 售后换屏和原来一样吗(售后换屏会不会有瑕疵)

    售后换屏和原来一样吗(售后换屏会不会有瑕疵)

  • 魅族16sPro的电池容量(魅族16spro电池更换)

    魅族16sPro的电池容量(魅族16spro电池更换)

  • 箱线图怎么分析结论(箱线图怎么分析分布特征)

    箱线图怎么分析结论(箱线图怎么分析分布特征)

  • 嘀嗒顺风车每天可以接几单(嘀嗒顺风车每天只能接两单吗)

    嘀嗒顺风车每天可以接几单(嘀嗒顺风车每天只能接两单吗)

  • 怎样解除拉黑电话号码(拉黑电话怎么解除黑名单)

    怎样解除拉黑电话号码(拉黑电话怎么解除黑名单)

  • 为什么朋友圈只能发10秒视频(为什么朋友圈只有一条横线)

    为什么朋友圈只能发10秒视频(为什么朋友圈只有一条横线)

  • 微信主界面白色怎么换(微信主界面白色的背景怎么更改)

    微信主界面白色怎么换(微信主界面白色的背景怎么更改)

  • 一师一优课视频传不上去(一师一优课视频播放不出来)

    一师一优课视频传不上去(一师一优课视频播放不出来)

  • qq密码忘了没有手机号(qq密码忘了没有好友辅助怎么办)

    qq密码忘了没有手机号(qq密码忘了没有好友辅助怎么办)

  • JS数组常用的操作方法(js中数组操作)

    JS数组常用的操作方法(js中数组操作)

  • 银行存款利息收税吗
  • 代扣个税的会计分录怎么做
  • 广告公司与广告公司合作的协议
  • 甲供材料需要乙方上税吗
  • 汇款退回来的可以不做账吗
  • 空调的折旧年限和残值率
  • 利润表中持续经营净利润公式
  • 邮局可以开发票吗 税点多少
  • 应解汇款科目
  • 增值税留抵退税政策2022
  • 哪些费用可以进项抵扣
  • 关税减免有哪些类型?
  • 企业为职工负担的个人所得税是什么意思
  • 所得税费用计算典型例题
  • 背书转让后的电子承兑怎么打印
  • 代扣代缴增值税可以抵扣进项税?
  • 停薪留职单位欠缴社保怎么处理
  • win11重置此电脑失败
  • msdn原版win7
  • 网银年费如何做账
  • 货币资金资产处置损益表如何填
  • php环境中可毒
  • 事业单位需要交个人所得税吗
  • (Select)解决:Element-ui 中 Select 选择器下拉框样式及输入框样式的修改问题(背景色透明与悬停背景色变化与下拉框边距变化等操作)
  • 树上有只松鼠简笔画
  • wifi信号弱了
  • 发票已认证还能作废吗2020
  • 今天端午节?
  • 依夫城堡
  • 劳动保护经费
  • php自定义header
  • 个人转让土地使用权可以开专票吗
  • php对象
  • 重置java
  • 520要来了要吵架的赶紧
  • php curl cookie
  • php多维数组合并相同key
  • php 接口
  • 商品流通的企业
  • 报关单填制的运费是什么
  • 员工加班餐费该怎么算
  • 固定资产的认定标准2000元
  • 职工教育经费年底要冲回吗
  • 帝国cms灵动标签调用标题图片
  • 外经证开错作废要带些什么
  • 记帐时借方是什么意思
  • 累计摊销咋算
  • PostgreSQL 角色与用户管理介绍
  • 小规模减免附加税会计分录怎么做
  • 长期待摊费用属于资产类吗
  • 公司给材料商付款表格
  • 企业筹办费计入什么科目
  • 转回坏账准备影响营业利润吗
  • 运费开什么发票
  • 计提折旧,生成折旧分摊凭证步骤
  • 上月留抵税额怎么看
  • 在建工程的会计代码
  • 简易征收计算企业所得税怎么算
  • 公司开具电子发票是否取消纸质发票开具
  • 公司账本需要保留几年
  • 怎么样建账做账
  • centos怎么扩容
  • win10一年更新几次
  • edge新版浏览器
  • win7调出ie浏览器
  • 一键快速关机下载手机版
  • 显示win7
  • 用bat调用exe并输入参数
  • javascript的介绍
  • JavaScript入门教程
  • getelementbyid isnotafunction
  • python怎么读取中文txt文本
  • 怎么在手机开数据那里看用了多少流量
  • 交通运输业的税率9%和13%
  • 深圳市公安局的位置
  • 电子税务局如何查询财务报表
  • 银行缴纳印花税存在问题和建议
  • 企业所得税优惠事项管理目录2023
  • 福建税务局电子税务局电话多少
  • 济宁任城区多大面积
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设