此博文是修改https://blog.csdn.net/jiacong_wang/article/details/105631229
这位大大的博文而成的,自己根据自己的情况稍微加了点东西

要修改的地方有4处

1.修改网络第一层,把3通道改为1
法一:直接在定义网络的地方修改

self.conv1 = nn.Conv2d(1, self.in_channel, kernel_size=7, stride=2,padding=3, bias=False)

法二:在调用网络模型的地方修改

model = resnet50()
model.conv1 = nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
model = model.to(device)

2.修改读取数据的方式
--------修改之前:

--------修改之后

 train_transformer = transforms.Compose([transforms.Grayscale(1), # 修改transforms.RandomHorizontalFlip(0.5),  transforms.ToTensor(),                transforms.Normalize(0.485, 0.229, inplace=True),  # 修改(-1,1)])
  • 修改方法
  1. 修改transform(图像预处理操作)
      添加transforms.Grayscale(1),将图像转换为单通道图像(经实验,图像矩阵的数据并不会发生变化)
  2. transforms.Normalize修改如下,第一个参数为mean,第二个参数为std,因为是单通道,所以进行Z-Score时仅需要对一个通道进行操作,所以mean和std只需要一个值就行

3.修改读取数据集部分(mydataset.py)
-----修改之前

-----修改之后

img = Image.open(path_img)

只需要把后面转RGB的部分去掉就行

4.因为加载预训练模型而修改网络
要加载预训练模型,第一层的权重参数肯定不能加载,则只需要把第一层的权重参数避开就行:

  • 加载方法
    net = resnet50()# load pretrain weights# download url: https://download.pytorch.org/models/resnet34-333f7ec4.pthmodel_weight_path = "./resnet50-19c8e357.pth"assert os.path.exists(model_weight_path), "file {} does not exist.".format(model_weight_path)# 加载预训练模型并且把不需要的层去掉pre_state_dict = torch.load(model_weight_path)print("原模型", pre_state_dict.keys())new_state_dict = {}for k, v in net.state_dict().items():          # 遍历修改模型的各个层print("新模型", k)if k in pre_state_dict.keys() and k!= 'conv1.weight':new_state_dict[k] = pre_state_dict[k]  # 如果原模型的层也在新模型的层里面, 那新模型就加载原先训练好的权重net.load_state_dict(new_state_dict, False)# for param in net.parameters():#     param.requires_grad = False# change fc layer structurein_channel = net.fc.in_featuresnet.fc = nn.Linear(in_channel, 5)net.to(device)

ResNet50修改网络适应灰度图片并加载预训练模型相关推荐

  1. keras冻结_Keras 实现加载预训练模型并冻结网络的层

    在解决一个任务时,我会选择加载预训练模型并逐步fine-tune.比如,分类任务中,优异的深度学习网络有很多. ResNet, VGG, Xception等等... 并且这些模型参数已经在imagen ...

  2. Pytorch网络模型权重初始化、保存与加载模型、加载预训练模型、按需设置学习率

    前言 在我们对神经网络模型进行训练时,往往需要对模型进行初始化或者加载预训练模型.本文将对模型的权重初始化与加载预训练模型做一个学习记录,以便后续查询使用. 权重初始化 常见的初始化方法 PyTorc ...

  3. MXNet快速入门之训练加载预训练模型(四)

    前言 在前面几篇文章中详细介绍了MXNet的一些特点以及入门基础知识,本篇文章主要介绍如何使用MXNet来训练模型.加载模型进行预测.预训练模型以及MXNet中GPU使用的相关知识. 在介绍训练模型之 ...

  4. Caffe2教程实例,加载预训练模型

    Caffe2教程实例,加载预训练模型 概述 本教程使用模型库中的预训练模型squeezenet 里分类我们自己的图片.我们需要提供要分类图片的路径或者URL信息作为输入.了解ImageNet对象代码可 ...

  5. pytorch:加载预训练模型(多卡加载单卡预训练模型,多GPU,单GPU)

    在pytorch加载预训练模型时,可能遇到以下几种情况. 分为以下几种 在pytorch加载预训练模型时,可能遇到以下几种情况. 1.多卡训练模型加载单卡预训练模型 2. 多卡训练模型加载多卡预训练模 ...

  6. HuggingFace学习3:加载预训练模型完成机器翻译(中译英)任务

    加载模型页面为:https://huggingface.co/liam168/trans-opus-mt-zh-en 文章目录 整理文件 跑通程序,测试预训练模型 拆解Pipeline,逐步进行翻译任 ...

  7. 加载预训练模型时报错 KeyError: param ‘initial_lr‘ is not specified in param_groups[0]

    在加载预训练模型继续训练时,程序报错:KeyError: "param 'initial_lr' is not specified in param_groups[0] when resum ...

  8. Python网络爬虫之图片懒加载技术、selenium和PhantomJS

    引入 今日概要 图片懒加载 selenium phantomJs 谷歌无头浏览器 知识点回顾 验证码处理流程 今日详情 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材ht ...

  9. 解决HuggingFace加载预训练模型时报错TypeError: expected str, bytes or os.PathLike object, not NoneType

    完整报错: TypeError: expected str, bytes or os.PathLike object, not NoneType 解决方法 检查下载的组件: 步骤1:完整的下载组件,包 ...

  10. Tensorflow加载预训练模型和保存模型(ckpt文件)以及迁移学习finetuning

    使用tensorflow过程中,训练结束后我们需要用到模型文件.有时候,我们可能也需要用到别人训练好的模型,并在这个基础上再次训练.这时候我们需要掌握如何操作这些模型数据.看完本文,相信你一定会有收获 ...

最新文章

  1. 重返全球第三,小米做对了什么?
  2. 使用IBMMQ时的那些事
  3. 字符流复制Java文件改进版
  4. javafx 调用java_Java“地铁”表(JavaFX)
  5. html网页响应时间调试,HTML5 使用performance.now衡量Webworker的响应时间
  6. 晶振两端的谐振电容有特殊要求吗_干货 | 晶振电路设计诀窍
  7. 【软件领域知识整理】贵金属交易的K线图解释(二)
  8. github 改善网速
  9. 正则化、岭回归与LASSO回归(套索回归)
  10. 别让这个时代越来越冷漠
  11. 解决 Eclipse不支持tomcat9
  12. jmf608硬盘修复_JMF608固态硬盘主控 SSD套料 SSD电路板 SATA3 封装BGA152|TSOP48
  13. python 游戏(记忆拼图Memory_Puzzle)
  14. 分享|数智化转型咨询赋能白皮书2021(附PDF)
  15. YUV420视频上面添加字幕
  16. Axure长页面滚动拖动制作
  17. xUnit安装及注意事项
  18. 网络流——最大流问题
  19. linux 实时性 100ms,实时录播延迟长达100ms
  20. 梦里什么都有(状压DP)

热门文章

  1. 腾讯是如何一刀刀,在15年间干死那些竞争对手的?! (zz)
  2. 文物摄影中白平衡的正确设置(图)
  3. 《零边际成本社会》书中的精髓:零边际成本所引发的共享经济,将颠覆资本主义和社会主义。
  4. 怎么解决电脑系统故障?
  5. 小米路由器登陆以及切换wan账户脚本
  6. 戴个美瞳却患上了角膜炎和干眼症?
  7. Android 在PreferenceActivity 中移除一个Preference
  8. 电磁屏蔽一般可分为三种
  9. ubuntu终端设置休眠
  10. 网络原理考试到ADSL上网原理