本文主要内容如题:

在使用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 网络模型的数据处理方式:

https://github.com/pytorch/vision/blob/9d9f48a3b483771ad0ed50ed871c1677edef6d2a/torchvision/models/googlenet.py#L81-L85

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

https://github.com/pytorch/vision/blob/9d9f48a3b483771ad0ed50ed871c1677edef6d2a/torchvision/models/inception.py#L76-L80

可以看到,这两个网络其实是不进行数据预处理的,因为为了保证数据集中数据预处理的统一性所以在dataset中所有模型均进行了数据正则化操作,但是实际这两个模型不需要数据正则化所以在模型定义中这两个模型又进行了逆正则化操作,也就是将dataset中的数据正则化进行消除。

====================================================

通过该文知道了torchvision 中googlenet 和 inception 网络数据预处理的不同于其他模型,同时也知道了在模型迁移时我们是有必要知道预训练参数的训练数据的预处理操作的,如果预训练时候对数据进行了正则化那么迁移后也是需要对新数据进行同样的正则化,不然就会损失掉模型的收敛性。

=========================================

在使用pytorch官方给出的torchvision中的预训练模型参数时为保证收敛性要求使用原始的数据预处理方式的更多相关文章

  1. PyTorch保存模型与加载模型+Finetune预训练模型使用

    Pytorch 保存模型与加载模型 PyTorch之保存加载模型 参数初始化参 数的初始化其实就是对参数赋值.而我们需要学习的参数其实都是Variable,它其实是对Tensor的封装,同时提供了da ...

  2. pytorch加载预训练模型参数的方式

    1.直接使用默认程序里的下载方式,往往比较慢: 2.通过修改源代码,使得模型加载已经下载好的参数,修改地方如下: 通过查找自己代码里所调用网络的类,使用pycharm自带的函数查找功能(ctrl+鼠标 ...

  3. 【小白学PyTorch】5 torchvision预训练模型与数据集全览

    文章来自:微信公众号[机器学习炼丹术].一个ai专业研究生的个人学习分享公众号 文章目录: 目录 torchvision 1 torchvision.datssets 2 torchvision.mo ...

  4. pytorch预训练模型的下载地址以及解决下载速度慢的方法

    https://github.com/pytorch/vision/tree/master/torchvision/models 几乎所有的常用预训练模型都在这里面 总结下各种模型的下载地址: 1 R ...

  5. Pytorch——BERT 预训练模型及文本分类

    BERT 预训练模型及文本分类 介绍 如果你关注自然语言处理技术的发展,那你一定听说过 BERT,它的诞生对自然语言处理领域具有着里程碑式的意义.本次试验将介绍 BERT 的模型结构,以及将其应用于文 ...

  6. ubuntu之路——day3(本来打算做pytorch的练习 但是想到前段时间的数据预处理的可视化分析 就先总结一下)

    首先依托于一个场景来进行可视化分析 直接选了天池大数据竞赛的新人赛的一个活跃题目 用的方式也是最常用的数据预处理方式 [新人赛]快来一起挖掘幸福感!https://tianchi.aliyun.com ...

  7. 修改pytorch官方实例适用于自己的二分类迁移学习项目

    本demo从pytorch官方的迁移学习示例修改而来,增加了以下功能: 根据AUC来迭代最优参数: 五折交叉验证: 输出验证集错误分类图片: 输出分类报告并保存AUC结果图片. import os i ...

  8. Note | PyTorch官方教程学习笔记

    目录 1. 快速入门PYTORCH 1.1. 什么是PyTorch 1.1.1. 基础概念 1.1.2. 与NumPy之间的桥梁 1.2. Autograd: Automatic Differenti ...

  9. 【小白学PyTorch】7 最新版本torchvision.transforms常用API翻译与讲解

    文章来自:微信公众号[机器学习炼丹术].欢迎关注支持原创 也欢迎添加作者微信:cyx645016617. 参考目录: 目录 1 基本函数 1.1 Compose 1.2 RandomChoice 1. ...

  10. PyTorch官方中文文档:torch.nn

    torch.nn Parameters class torch.nn.Parameter() 艾伯特(http://www.aibbt.com/)国内第一家人工智能门户,微信公众号:aibbtcom ...

随机推荐

  1. 夜莺中心端管理categraf采集规则并下发

    痛点 市面上常见的采集器,比如 telegraf.grafana-agent.datadog-agent 等,通常内置了多种采集插件,比如可以采集操作系统的常规指标,也可以采集 mysql.redis ...

  2. JavaScript执行模型笔记

    JavaScript执行模型 引言 JavaScript是一个单线程(Single-threaded)异步(Asynchronous)非阻塞(Non-blocking)并发(Concurrent)语言 ...

  3. flutter 结合 springBoot 完成登录 注册 功能

    后端接口 前端调用接口代码 import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import '../page ...

  4. FFmpeg开发笔记全目录(FFmpeg开发实战详解,含直播系统的搭建过程)

    ​记录下FFmpeg的学习笔记目录,完整的FFmpeg开发实战内容详见<FFmpeg开发实战:从零基础到短视频上线>一书. 下面是补充的FFmpeg开发笔记内容目录,主要是对<FFm ...

  5. HTTP 协议学习:1-HTTP概述

    背景 原文:HTTP概述 HTTP是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议).它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说, ...

  6. 多个子节点收集日志-主节点上传到HDFS

    Master: ---------------------- #MasterAgentMasterAgent.channels = c1MasterAgent.sources = s1MasterAg ...

  7. 分布式文件系统 FastDFS 整理

    1.FastDFS 1.1.了解基础概念 1.1.1.什么是分布式文件系统? 全称:Distributed File System,即简称的DFS 这个东西可以是一个软件,也可以说是服务器,和tomc ...

  8. 如何将自己的网站从 HTTP 的转换为 HTTPS 的

    1. 获取 SSL/TLS 证书 首先,你需要获得一个 SSL/TLS 证书.你可以从以下来源之一获取证书: 免费证书: Let's Encrypt:一个免费的.自动化的证书颁发机构(CA),广泛使用 ...

  9. Linux Mint操作系统安装

    1,Linux 发行版 什么是Linux 发行版呢?这要从Linux 来源说起.Unix操作系统后期,开始收费和商业闭源了.一个叫Richard  Stallman 的人就发起 GNU 计划,想模仿U ...

  10. Spring定时任务和@Async注解异步调用

    Spring定时任务 1.@Scheduled注解方式 使用方式 @Scheduled的使用方式十分简单,首先在项目启动类添加注解@EnableScheduled. 编写定时任务方法,方法上添加注解@ ...