一、前言

本篇记录使用 pytorch 官方 resnet101 实现迁移学习,迁移学习是当前深度学习领域的一系列通用的解决方案,而不是一个具体的算法模型。Pre-training + fine-tuning(预训练+调参) 的迁移学习方式是现在深度学习中一个非常流行的迁移学习方式,有以下3步

(1)把预训练模型当做特征提取器: TensorFlow或者Pytorch都有ImageNet上预训练好的模型,将最后一层全连接层(原始的是1000个类别或者更多)改成你自己的分类任务的种类进行输出,或者把最后一层直接去掉换成自己的分类器, 剩下的全部网络结构当做一个特征提取器。
 (2)fine-tuning: 通常来说,直接把预训练模型来用效果不一定足够好,因此需要进行fine-tuning(微调)。fine-tuning需要冻结网络的前几层参数,只更新网络结构的后面几层和最后的全连接层,这样效果会更好。
 (3) Learning rate: 在迁移学习的微调过程中一般不建议使用过大的学习率,通常来说1e-5是比较合适的选择

二、代码

resnet101 官网定义

import torch
from torchvision.models.resnet import ResNet, Bottleneckdef resnet101(pretrained=False, **kwargs):"""Constructs a ResNet-101 model.Args:pretrained (bool): If True, returns a model pre-trained on ImageNet"""model = ResNet(Bottleneck, [3, 4, 23, 3], **kwargs)if pretrained:checkpoint = torch.load('resnet101-5d3b4d8f.pth', map_location='cpu')  # 加载模型文件,pt, pth 文件都可以model.load_state_dict( checkpoint )return model

然后使用resnet101,加载官方预训练模型,再修改最后全连接层,训练过程只对最后全连接层做训练

    #初始化net,训练和验证都需要netnet = resnet101(pretrained=True)net.fc = torch.nn.Sequential(torch.nn.Linear(2048, 1024),torch.nn.ReLU(),torch.nn.Dropout(p=0.5),torch.nn.Linear(1024, 1024),torch.nn.ReLU(),torch.nn.Dropout(p=0.5),torch.nn.Linear(1024, 257 ))  net = net.to(device)   #初始化optimizer,只有train时使用optimizer = optim.SGD( net.fc.parameters(), lr=1e-5, momentum=0.9)scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 20 , gamma=0.5) 

pytorch(8)-- resnet101 迁移学习记录相关推荐

  1. Pytorch:NLP 迁移学习、NLP中的标准数据集、NLP中的常用预训练模型、加载和使用预训练模型、huggingface的transfomers微调脚本文件

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) run_glue.py微调脚本代码 python命令执行run ...

  2. Pytorch:利用迁移学习做图像分类

    **Pytorch:利用迁移学习做图像分类** 数据准备 数据扩充 数据加载 迁移学习 训练 验证 推理/分类 在这一篇文章中,我们描述了如何在 pytorch中进行图像分类.我们将使用Caltech ...

  3. 【pytorch】MobileNetV2迁移学习+可视化+训练数据保存

    一.前言 由于写论文,不单单需要可视化数据,最好能将训练过程的完整数据全部保存下来.所以,我又又又写了篇迁移学习的文章,主要的改变是增加了训练数据记录的模块,可以将训练全过程的数据记录为项目路径下的E ...

  4. timm——pytorch下的迁移学习模型库·详细使用教程

    timm(Pytorch Image Models)项目是一个站在大佬肩上的图像分类模型库,通过timm可以轻松的搭建出各种sota模型(目前内置预训练模型592个,包含densenet系列.effi ...

  5. pytorch load state dict_Pytorch学习记录-使用Pytorch进行深度学习,保存和加载模型

    新建 Microsoft PowerPoint 演示文稿 (2).jpg 保存和加载模型 在完成60分钟入门之后,接下来有六节tutorials和五节关于文本处理的tutorials.争取一天一节.不 ...

  6. Pytorch 的迁移学习的理解

    个人理解,迁移学习可以分为三类: 第一类:以训练好的模型参数为基础,对所有参数进行继续优化. 即,先在别的训练数据集上训练模型,达到一定训练标准之后,用当前的数据集继续进行训练. 第二类:将已经训练好 ...

  7. Kaggle狗的种类识别竞赛——基于Pytorch框架的迁移学习方法

    本文代码主要参考: https://www.kaggle.com/blankitdl/using-pytorch-resnet https://www.kaggle.com/blankitdl/use ...

  8. 人工智能AI:TensorFlow Keras PyTorch MXNet PaddlePaddle 深度学习实战 part1

    日萌社 人工智能AI:TensorFlow Keras PyTorch MXNet PaddlePaddle 深度学习实战 part1 人工智能AI:TensorFlow Keras PyTorch ...

  9. 迁移学习:如何为您的机器学习问题选择正确的预训练模型

    https://www.toutiao.com/a6687923187298075144/ 在这篇文章中,我们将简要介绍一下迁移学习是什么,以及如何使用它. 什么是迁移学习? 迁移学习是使用预训练模型 ...

  10. pytorch图像分类篇:6. ResNet网络结构详解与迁移学习简介

    前言 最近在b站发现了一个非常好的 计算机视觉 + pytorch 的教程,相见恨晚,能让初学者少走很多弯路. 因此决定按着up给的教程路线:图像分类→目标检测→-一步步学习用pytorch实现深度学 ...

最新文章

  1. 使用Flink时从Kafka中读取Array[Byte]类型的Schema
  2. Uva 11396 爪分解
  3. VC界面库BCGControlBar和Xtreme Toolkit详细对比评测
  4. 使用Ansible批量部署SSH免密登录远程主机
  5. 涨知识!提单及运输业务中常用的一些代码、术语及意义!
  6. python爬虫脚本ie=utf-8_python脚本-共享文件爬虫
  7. 胶囊路由_评论:胶囊之间的动态路由
  8. window.open怎么设置title_企业seo怎么优化 都有那些策略?
  9. php将pdf保存文件到本地,将生成的PDF文件存储在服务器上
  10. Android开发笔记(三)屏幕分辨率
  11. axios 文档中文翻译
  12. 重磅!李航《统计学习方法》最新资源,笔记、Python 代码一应俱全!
  13. 有基础学python看什么书好_python入门学习看什么书好,有什么书籍推荐
  14. 黑苹果OC引导注入_黑苹果OC配置工具:OpenCore Configurator v2.15.2.0
  15. 中国5级省市编码爬去整理(统计用区划和城乡划分代码)
  16. html所有标签大全wps文件,html所有标签及其作用说明.wps
  17. 如何搭建个人博客网站
  18. 漫谈程序员系列:群星闪耀的黄金时代
  19. 电脑回收站在哪里?回收站删除的文件怎么恢复?
  20. R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列

热门文章

  1. 基于stm32的智能风扇设计
  2. ASA使用ASDM管理
  3. MDK5:正点原子stm32遇Target not created的解决方法
  4. idea设置jsp模板
  5. eclipse上svn创建分支、合并、切换
  6. 杨柳青镇cad_CAD制图岗位职责|CAD制图工作内容 - 职业圈
  7. 如何将webp格式转换成jpg?
  8. linux系统添加中文字体后不生效
  9. ESP8266教程——采用AT指令
  10. gsp计算机管理权限,新gsp计算机权限设置