pytorch使用(五)使用pytorch进行微调(fine-tuning)

原创 2018年04月14日 23:29:09

pytorch使用:目录


pytorch使用(五)使用pytorch进行微调(fine-tuning)

在使用pytorch的时候,发现使用预训练的模型进行微调的时候有比较难的两步,一是如何加载需要的两部分模型

1. 定义网络并且加载网络参数
  • 首先定义自己模型并且加载预训练网络的模型和参数,定义自己模型的时候把想要用的层名字设置为和预训练模型一样的
  • 加载预训练模型中的参数到自己的模型
# load the pre-trained network
model_zero = C3D()
model_zero.load_state_dict(torch.load(paraPath))

model = ROI_C3D(classes=para['nClass'])#ROI_C3D is my net
model_dict = model.state_dict()

model_zero = {k: v for k, v in model_zero.state_dict().items() if k in model_dict}
model_dict.update(model_zero)
model.load_state_dict(model_dict)
2. 设置学习率

通常预训练层的学习率会低一些. 在下面这个例子中,在定义网络的时候,相比原来的模型,将最后一个全连接的名字改为了classifier

#set optimization method
ignored_params = list(map(id, model.classifier.parameters())) #layer need to be trained
base_params = filter(lambda p: id(p) not in ignored_params,model.parameters())
optimizer = optim.SGD([
    {'params': base_params},
    {'params': model.classifier.parameters(), 'lr': para['lr']*0.1}], 0.001, momentum=0.9, weight_decay=1e-4)

这样预训练的模型学习率是0.0001,而最后一个全连接是0.001

版权声明:转载请附上链接 https://blog.csdn.net/GYGuo95/article/details/79945631

PyTorch参数初始化和Finetune

前言这篇文章算是论坛PyTorch Forums关于参数初始化和finetune的总结,也是我在写代码中用的算是“最佳实践”吧。最后希望大家没事多逛逛论坛,有很多高质量的回答。参数初始化参数的初始化其...
  • u012759136
  • u012759136
  • 2017-03-24 19:45:13
  • 6171

PyTorch学习系列(十)——如何在训练时固定一些层?

有时我们会用其他任务(如分类)预训练好网络,然后固定卷积层作为图像特征提取器,然后用当前任务的数据只训练全连接层。那么PyTorch如何在训练时固定底层只更新上层呢?这意味着我们希望反向传播计算梯度时...
  • VictoriaW
  • VictoriaW
  • 2017-05-27 10:52:34
  • 5737

PyTorch 中文文档

  • 2017年12月02日 21:37
  • 170KB
  • 下载

pytorch学习-迁移模型

pytorch学习-迁移模型 迁移模型:即是用pretrained models而不是from scratch with random initialization 注意点:数据输入的格式变换以及...
  • Mulanshine
  • Mulanshine
  • 2017-11-04 15:44:04
  • 377

pytorch学习笔记(十一):fine-tune 预训练的模型

pytorch : fine-tune torchvision 中预训练的模型torchvision 中包含了很多预训练好的模型,这样就使得 fine-tune 非常容易。本文主要介绍如何 fine-...
  • u012436149
  • u012436149
  • 2017-09-20 10:42:59
  • 2567

使用pycaffe进行的fine-tuning的过程

最近在进行caffe的fine-tuning的实验,在此做个简单地介绍和总结,方便以后的查询。 pre-trainning 与 fine-tuning 简单介绍 在使用大型网络的时候,经常是自己的...
  • Losteng
  • Losteng
  • 2016-06-22 09:22:21
  • 2571

Pytorch学习笔记(四)

(8)迁移学习(Transfer Learning) 接下来将会使用ResNet进行迁移学习,完成图片分类。目前迁移学习的方式主要有两种,一种是fineturning,就是只改变pretrain网络...
  • kongshuchen
  • kongshuchen
  • 2017-05-16 10:05:13
  • 3241

PyTorch学习系列(十五)——如何加载预训练模型?

torch.nn.Module对象有函数static_dict()用于返回包含模块所有状态的字典,包括参数和缓存。键是参数名称或者缓存名称。函数Module::load_state_dict(stat...
  • VictoriaW
  • VictoriaW
  • 2017-05-31 16:24:23
  • 9592

PyTorch实现简单的数字分类

使电脑学会0.1-0.5为一类,大于0.5为一类 import torch import numpy as np import matplotlib.pyplot as plt from torc...
  • leixd1994
  • leixd1994
  • 2018-03-06 11:10:46
  • 32

利用Pytorch进行CNN详细剖析

转载请注明出处:利用Pytorch进行CNN详细剖析  (乐投网 - 大数据,人工智能第一干货网) 本文缘起于一次CNN作业中的一道题,这道题涉及到了基本的CNN网络搭建,在MNIST数据集上的...
  • qq_36852006
  • qq_36852006
  • 2017-08-15 11:13:25
  • 784
收藏助手
不良信息举报
您举报文章:pytorch使用(五)使用pytorch进行微调(fine-tuning)
举报原因:
原因补充:

(最多只允许输入30个字)