在使用pytorch官方给出的torchvision中的预训练模型参数时为保证收敛性要求使用原始的数据预处理方式
本文主要内容如题:
在使用pytorch官方给出的torchvision中的预训练模型参数时为保证收敛性要求使用原始的数据预处理方式
具体的pytorch官方讨论:
https://github.com/pytorch/vision/pull/782
===================================================
原文最初的讨论是数据预训练是否在模型训练的时候显示的给出:

回答是:

由于数据预处理步骤与训练数据集相关而不是与模型相关,所以官方将模型的预训练的步骤写在了torchvision中的dataset部分。
但是这个讨论最为有信息量的回答是:

从这个回答中我们知道两个点,
第一点:
那就是torchvision中的数据预处理虽然写在了torchvision中的dataset里面,但是实际上 googlenet and inceptionV3 这两个模型的数据预处理是与其他模型不同的。其他模型的数据预处理方式中有正则化操作:

但是,googlenet and inceptionV3 ,并不进行数据显示的正则化操作。
第二点:
The normalisation is not independent of the model if you are using transfer learning. Not using imagenet normalisation (by default) while using imagenet pretrained weights will lead to slower convergence of the model as the models are expecting the images to come from the distribution having mean and std as that of imagenet on which it was thoroughly trained.
数据预处理虽然和模型无关只和数据集有关,但是如果使用的是预训练模型参数那么数据的预处理方式也很重要,因为在迁移学习的时候迁移后的模型还是更适用于采用了原始预处理方式的数据,不然的话会减慢模型的收敛。迁移后的模型还是期望获得原始数据(预训练的数据集)分布的数据(相同的均值和方差)。
==================================================

Yes, I have a source. Please have a look at the inceptionV3 (here) and googlenet (here) implementation.
googlenet 网络模型的数据处理方式:

inception 网络模型的数据处理方式:

可以看到,这两个网络其实是不进行数据预处理的,因为为了保证数据集中数据预处理的统一性所以在dataset中所有模型均进行了数据正则化操作,但是实际这两个模型不需要数据正则化所以在模型定义中这两个模型又进行了逆正则化操作,也就是将dataset中的数据正则化进行消除。
====================================================
通过该文知道了torchvision 中googlenet 和 inception 网络数据预处理的不同于其他模型,同时也知道了在模型迁移时我们是有必要知道预训练参数的训练数据的预处理操作的,如果预训练时候对数据进行了正则化那么迁移后也是需要对新数据进行同样的正则化,不然就会损失掉模型的收敛性。
=========================================
在使用pytorch官方给出的torchvision中的预训练模型参数时为保证收敛性要求使用原始的数据预处理方式的更多相关文章
- PyTorch保存模型与加载模型+Finetune预训练模型使用
Pytorch 保存模型与加载模型 PyTorch之保存加载模型 参数初始化参 数的初始化其实就是对参数赋值.而我们需要学习的参数其实都是Variable,它其实是对Tensor的封装,同时提供了da ...
- pytorch加载预训练模型参数的方式
1.直接使用默认程序里的下载方式,往往比较慢: 2.通过修改源代码,使得模型加载已经下载好的参数,修改地方如下: 通过查找自己代码里所调用网络的类,使用pycharm自带的函数查找功能(ctrl+鼠标 ...
- 【小白学PyTorch】5 torchvision预训练模型与数据集全览
文章来自:微信公众号[机器学习炼丹术].一个ai专业研究生的个人学习分享公众号 文章目录: 目录 torchvision 1 torchvision.datssets 2 torchvision.mo ...
- pytorch预训练模型的下载地址以及解决下载速度慢的方法
https://github.com/pytorch/vision/tree/master/torchvision/models 几乎所有的常用预训练模型都在这里面 总结下各种模型的下载地址: 1 R ...
- Pytorch——BERT 预训练模型及文本分类
BERT 预训练模型及文本分类 介绍 如果你关注自然语言处理技术的发展,那你一定听说过 BERT,它的诞生对自然语言处理领域具有着里程碑式的意义.本次试验将介绍 BERT 的模型结构,以及将其应用于文 ...
- ubuntu之路——day3(本来打算做pytorch的练习 但是想到前段时间的数据预处理的可视化分析 就先总结一下)
首先依托于一个场景来进行可视化分析 直接选了天池大数据竞赛的新人赛的一个活跃题目 用的方式也是最常用的数据预处理方式 [新人赛]快来一起挖掘幸福感!https://tianchi.aliyun.com ...
- 修改pytorch官方实例适用于自己的二分类迁移学习项目
本demo从pytorch官方的迁移学习示例修改而来,增加了以下功能: 根据AUC来迭代最优参数: 五折交叉验证: 输出验证集错误分类图片: 输出分类报告并保存AUC结果图片. import os i ...
- Note | PyTorch官方教程学习笔记
目录 1. 快速入门PYTORCH 1.1. 什么是PyTorch 1.1.1. 基础概念 1.1.2. 与NumPy之间的桥梁 1.2. Autograd: Automatic Differenti ...
- 【小白学PyTorch】7 最新版本torchvision.transforms常用API翻译与讲解
文章来自:微信公众号[机器学习炼丹术].欢迎关注支持原创 也欢迎添加作者微信:cyx645016617. 参考目录: 目录 1 基本函数 1.1 Compose 1.2 RandomChoice 1. ...
- PyTorch官方中文文档:torch.nn
torch.nn Parameters class torch.nn.Parameter() 艾伯特(http://www.aibbt.com/)国内第一家人工智能门户,微信公众号:aibbtcom ...
随机推荐
- Winform绘制圆形图
1 private void Form_Load(object sender, EventArgs e) 2 { 3 PictureBox pic = new PictureBox(); 4 pic. ...
- 2020年你不可不知的自动化框架,可替代Selenuim的测试框架Top10
Selenium是一种开源自动测试工具.它可以跨不同的浏览器和平台在Web应用程序上执行功能,回归,负载测试.Slenium是最好的工具之一,但确实有一些缺点. 业界有一些强大的工具可以替代Selen ...
- OB_MYSQL UPDATE 优化案例
在工单系统上看到有一条SQL问题还没解决,直接联系这位同学看看是否需要帮忙. 慢SQL: UPDATE A SET CORPORATION_NAME = ( SELECT DISTINCT CORPO ...
- Vue聊天框自动滚动底部
原理:通过监听数据更新,将滚动的最大高度赋值给滚动条的最大高度,并等待页面更新完成后再将页面滚动到底部. 容器代码 watch监听 scrollTop: 距离最顶部高度 scrollHeight:滚动 ...
- kettle从入门到精通 第七十一课 ETL之kettle 再谈http post,轻松掌握body中传递json参数
场景: kettle中http post步骤如何发送http请求且传递body参数? 解决方案: http post步骤中直接设置Request entity field字段即可. 1.手边没有现成的 ...
- Centos7搭建Minio环境(配置开机自启)
Minio 添加环境变量 # 设置控制台账号 最少3位 export MINIO_ACCESS_KEY=admin # 设置密码 最少8位 export MINIO_SECRET_KEY=123456 ...
- P2984
[USACO10FEB]Chocolate Giving S 题意描述 Farmer John有B头奶牛(1<=B<=25000),有N(2*B<=N<=50000)个农场,编 ...
- 一位有着近 10 年 iOS 开发经验的全职爸爸如何高效管理时间?
名字: Mindr 开发者 / 团队: Florian Vates 平台: iOS, iPadOS, Android 正在开发中 请简要介绍下这款产品 有没有发现自己总是不断推迟待办事项的通知? Mi ...
- MoneyPrinterPlus全面支持本地Ollama大模型
MoneyPrinterPlus现在支持批量混剪,一键AI生成视频,一键批量发布短视频这些功能了. 之前支持的大模型是常用的云厂商,比如OpenAI,Azure,Kimi,Qianfan,Baichu ...
- git将某个开发分支最近的提交合并成一个提交
你可以使用 `git merge --squash` 命令将某个开发分支最近的提交合并成一个提交. 具体步骤如下: 1. 切换到你想要合并的分支上,比如 `develop` 分支: `git chec ...