位置: 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)

  • 小规模纳税人减按1%如何填报申报表
  • 浙江注册税务师考试时间
  • 清卡抄税报税顺序
  • 综合所得申报是报上个月的吗
  • 住宿开发票的税率是多少
  • 会议费怎么做会计分录
  • 怎么让银行同意商转公
  • 房租费可以摊销吗
  • 公司水费怎么做账
  • 无形资产土地需要折旧吗
  • 免抵退税额账务处理流程
  • 在建工程非应税项目有哪些?
  • 有形动产租赁包括有形动产融资租赁
  • 出口退税账务处理例题
  • 工程服务税收的分类
  • 合伙企业投资需要缴纳印花税吗
  • 发票上的二维码可以扫金额吗
  • 关于进项税额转出的规定
  • 应交税费的期初余额是借还是贷
  • 所得税报表怎么申报
  • 代开票扣了个人所得税怎么做账?
  • 简述资产的概念特征以及确认条件
  • 收购农产品再销售最新税收政策
  • 怎样打开电脑wifi连接
  • win10更新失败怎么回事
  • 华为鸿蒙harmonyos官网4.0升级
  • mac option开机
  • 资产负债表中应交税费包括哪些
  • 特定纳税人是什么意思
  • php正则匹配时间
  • 最新人工智能软件chingt
  • 为什么我们认为北京人已经学会使用火
  • iterator用法 移除对象
  • js中的数组
  • 增值税申报表填错不影响税额
  • 固定资产有金额界定吗
  • dedecms转zblog
  • 企业发生的汇兑差额
  • 差旅费报销注意哪些问题
  • 个人去开票要交税吗
  • 合营企业和联营企业是关联方吗
  • 基本户和零余额可以是一个账号么
  • 普通发票开具的管理是?
  • 融资租赁会计处理中,承租人与出租人之间有哪些联系?
  • 小规模纳税人附加税怎么算
  • 发票抵扣联认证完还有用吗
  • 企业每月营业额达多少需要交税
  • 预付账款如何调平
  • 收到财付通的短信通知
  • 企业购买国债逆回购要交企业所得税吗
  • 企业注销时实收资本清算时要作资产处置收益交所得税吗
  • 年金现值系数和复利现值系数的公式
  • 发生以下情况
  • 领用材料属于什么会计分录
  • 个体工商户的建筑劳务是否需要资质
  • mysql导入数据语句
  • mysql服务自动停止运行
  • rpm方式安装
  • win10怎么给Windows Defender添加排除项?
  • XP从4月8日起将正式停止支持服务、升级到 Win 8.1图文教程
  • centos设置终端快捷键
  • windows7hosts文件
  • liunx改时间命令
  • win8安装ie11
  • node.js javascript
  • react jss
  • javascript操作数组的方法
  • 菜鸟教程javaweb
  • android下的单元测试要配置以下说法不正确的是
  • android反编译软件
  • Android的AdapterView及其子类简介-android学习之旅(二十三)
  • 安卓手机管家怎么关闭
  • python socket用法
  • 电子普票最多领多少
  • 汕头市国税局公务员待遇
  • 全国残疾人工作先进个人
  • 国税怎么打印申报表
  • 按期申报和按次申报的区别
  • 会计的各种税
  • 船舶吨税是中央税还是地方税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设