transforms.ToTensor()与transforms.Normalize()函数解析
1、transforms.ToTensor()作用
ToTensor()
将shape
为(H, W, C)
的nump.ndarray
或img
转为shape
为(C, H, W)
的tensor
,其将每一个数值归一化到[0,1]
,其归一化方法比较简单,直接除以255即可。具体可参见如下代码:
import torchvision.transforms as transforms
import numpy as np
from __future__ import print_function# 定义转换方式,transforms.Compose将多个转换函数组合起来使用
transform1 = transforms.Compose([transforms.ToTensor()]) #归一化到(0,1),简单直接除以255# 定义一个数组
d1 = [1,2,3,4,5,6]
d2 = [4,5,6,7,8,9]
d3 = [7,8,9,10,11,14]
d4 = [11,12,13,14,15,15]
d5 = [d1,d2,d3,d4]
d = np.array([d5,d5,d5],dtype=np.float32)
d_t = np.transpose(d,(1,2,0)) # 转置为类似图像的shape,(H,W,C),作为transform的输入
# 查看d的shape
print('d.shape: ',d.shape, '\n', 'd_t.shape: ', d_t.shape)# 输出d.shape: (3, 4, 6) d_t.shape: (4, 6, 3)d_t_trans = transform1(d_t) # 直接使用函数归一化# 手动归一化,下面的两个步骤可以在源码里面找到
d_t_temp = torch.from_numpy(d_t.transpose((2,0,1)))
d_t_trans_man = d_t_temp.float().div(255)print(d_t_trans.equal(d_t_trans_man))# 输出True
2、transforms.Normalize()作用
在transforms.Compose([transforms.ToTensor()])
中加入transforms.Normalize()
,如下所示:transforms.Compose([transforms.ToTensor(),transforms.Normalize(std=(0.5,0.5,0.5),mean=(0.5,0.5,0.5))])
,则其作用就是先将输入归一化到(0,1)
,再使用公式"(x-mean)/std"
,将每个元素分布到(-1,1)
transform2 = transforms.Compose([transforms.ToTensor(),transforms.Normalize(std=(0.5,0.5,0.5),mean=(0.5,0.5,0.5))])# 归一化到(0,1)之后,再 (x-mean)/std,归一化到(-1,1),数据中存在大于mean和小于meand_t_trans_2 = transform2(d_t)
d_t_temp1 = torch.from_numpy(d_t.transpose((2,0,1)))
d_t_temp2 = d_t_temp1.float().div(255)
d_t_trans_man2 = d_t_temp2.sub_(0.5).div_(0.5)
print(d_t_trans_2.equal(d_t_trans_man2))#输出True
可我看很多代码里面是这样的:
torchvision.transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
这一组值是怎么来的?
这一组值是从imagenet
训练集中抽样算出来的。
3.参考
https://blog.csdn.net/u014484247/article/details/79997357
transforms.ToTensor()与transforms.Normalize()函数解析相关推荐
- 浅谈对transforms.ToTensor()和transforms.Normalize()函数的理解
前言 在进行tensor图片数据进行视觉时,一般会进行预处理操作,这个时候就需要用到ToTensor()和Normalize()这两个函数. 提示:以下是本篇文章正文内容,下面案例可供参考 一.ToT ...
- pytorch中的transforms.ToTensor和transforms.Normalize理解
- transforms.Compose和transforms.ToTensor()
1.图像处理.转不同格式显示 import torch import torchvision import torchvision.transforms as transforms import cv ...
- transforms.Compose,transforms.ToTensor(),transforms.Normalize()的含义与原理
transforms.Compose,transforms.ToTensor(),transforms.Normalize()的含义与原理 1.问题描述 问题来源于pytorch实现CNN神经网络的示 ...
- Pytorch下transforms.ToTensor(),transforms.Normalize()详解,及代码实现和复原
一.在数据处理时,我们要经常用到transforms.ToTensor(),transforms.Normalize()语句,将图像数据转换为tensor并标准化到[-1,1]之间. 其计算过程为: ...
- Pytorch图片转tensor/图片转tensor转图片(numpy array)(transforms.ToTensor())(opencv形式转tensor)
注意,读取图片成numpy array的范围是[0,255]是uint8 而转成tensor的范围就是[0,1.0], 是float 把图片转成成torch的tensor数据,一 ...
- torchvision.transforms.ToTensor(细节)对应caffe的转换
目录 1)torchvision.transforms.ToTensor 2)pytorch的图像预处理和caffe中的图像预处理 写这篇文章的初衷,就是同事跑过来问我,pytorch对图像的预处理为 ...
- 关于transforms.ToTensor()
代码中,数据的维度是(48,48,3) 过了transforms后,进入模型的输入tensor为(1,3,48,48) 感觉到很疑惑,transform怎么会改变输入的维度呢, transform = ...
- torchvision.transforms.ToTensor的用法
#torchvision.transforms.ToTensor 对于一个图片img,调用ToTensor转化成张量的形式,发生的不是将图片的RGB三维信道矩阵变成tensor 图片在内存中以byte ...
最新文章
- 【最大团】【HDU1530】【Maximum Clique】
- 程序员面试题精选100题(30)-赋值运算符重载函数[C/C++/C#]
- 河北师范大学计算机专业保研率,河北省内13所高校2021届保研率一览
- java while do_java中while和do-while的总结
- 快准狠!Intel论文揭示自家车牌识别算法:LPRNet
- WP8.1学习系列(第二章)——Toast通知
- python制作个人信息管理系统_python实现简易学生信息管理系统
- Ubuntu 14.04 英文版安装中文输入法
- BZOJ 4826: [Hnoi2017]影魔 单调栈 主席树
- 西安计算机二级12月,2017年12月计算机二级MS Office习题答案(一)
- 【原】React中,map出来的元素添加事件无法使用
- C++ cmake 命令用法
- 【杂谈】真相揭开有点吃惊:杨利伟出舱时
- 关于对比型数据与分布型数据的图表可视化
- 2021-CISCN-fianl-ezj4va
- 计算机组成原理相关话题,“计算机组成原理”教学改革研究
- SQL中查询MySQL的版本
- VMware虚拟机下Centos7 桥接方式网络配置完整步骤
- 计算机打不开sai文件夹,解决 Excel打开桌面文件 显示“无法找到C:\Documents.xls。请检查文件名的...”错误...
- 计算机网课计划,计算机基础课程授课计划表.docx
热门文章
- 在线流程图和思维导图开发技术详解(五)
- Python实现文字转图片
- Python撩妹实战——教你用微信每天给女朋友说晚安
- Typora搭建图床解决上传md文档图片无法加载的问题
- 《位置大数据隐私管理》—— 1.4 隐私泄露威胁
- yarn 出现error An unexpected error occurred错误的解决办法
- Linux虚拟声卡有吱吱声,解决Win7+8系统爆音有杂音吱吱声
- win python 判断 所有 子进程 结束_python 多进程如何终止或重启子进程?
- Java核心技术卷一读书笔记
- hdu4417 Super Mario(树状数组+离线区间操作)