pytorch随笔
pytorch中transform函数
一般用Compose把多个步骤整合到一起:
比如说
transforms.Compose([
transforms.CenterCrop(10),
transforms.ToTensor(),
])
这样就把两个步骤整合到一起
接下来介绍transforms中的函数
Resize:把给定的图片resize到given size
Normalize:Normalized an tensor image with mean and standard deviation
ToTensor:convert a PIL image to tensor (H*W*C) in range [0,255] to a torch.Tensor(C*H*W) in the range [0.0,1.0]
ToPILImage: convert a tensor to PIL image
Scale:目前已经不用了,推荐用Resize
CenterCrop:在图片的中间区域进行裁剪
RandomCrop:在一个随机的位置进行裁剪
RandomHorizontalFlip:以0.5的概率水平翻转给定的PIL图像
RandomVerticalFlip:以0.5的概率竖直翻转给定的PIL图像
RandomResizedCrop:将PIL图像裁剪成任意大小和纵横比
Grayscale:将图像转换为灰度图像
RandomGrayscale:将图像以一定的概率转换为灰度图像
FiceCrop:把图像裁剪为四个角和一个中心
TenCrop
Pad:填充
ColorJitter:随机改变图像的亮度对比度和饱和度
torchvision.transforms.Normalize()
是对数据进行归一化的操作
image = (image - mean) / std
假设你数据的范围是图片的数据范围四[0,1],那么如果mean = [.5, .5, .5],std = [.5, .5, .5],根据上述式子计算
(0−0.5)/0.5=−1
(1−0.5)/0.5=1
就可将数据归一化到[-1,1]。
#逆向归一化
origin = x * 0.5 + 0.5
图像处理、转不同格式显示 cv2, PIL.Image
import torch
import torchvision
import torchvision.transforms as transforms
import cv2
import numpy as np
from PIL import Image img_path = "./data/timg.jpg" # transforms.ToTensor()
transform1 = transforms.Compose([
transforms.ToTensor(),
]) ##numpy.ndarray
img = cv2.imread(img_path) # 读取图像 3x1080x1920(通道*高*宽),数值[0, 255]
print("img = ", img)
img1 = transform1(img) # 归一化到 3x1080x1920(通道*高*宽),数值[0.0,1.0]
print("img1 = ", img1) # 转化为numpy.ndarray并显示
img_1 = img1.numpy()*255
img_1 = img_1.astype('uint8')
img_1 = np.transpose(img_1, (1,2,0))
cv2.imshow('img_1', img_1)
cv2.waitKey() ##PIL
img = Image.open(img_path).convert('RGB') # 读取图像, 数据格式 [h, w, c]
img2 = transform1(img) # 归一化到 [0.0,1.0] # 转换到[c, h, w]
print("img2 = ",img2) #转化为PILImage并显示
img_2 = transforms.ToPILImage()(img2).convert('RGB')
#等同于np.transpose(img2, (1, 2, 0))
print("img_2 = ",img_2)
img_2.show()
torch.meshgrid()
x1 ,y1 = torch.meshgrid(x,y)
参数是两个,第一个参数我们假设是x,第二个参数假设就是y
输出的是两个tensor,size就是x.size * y.size(行数是x的个数,列数是y的个数)
具体输出看下面
注意:两个参数的数据类型要相同,要么都是float,要么都是int,否则会报错。

torch.clamp()
torch.clamp(input, min, max, out=None) → Tensor
将输入input张量每个元素的夹紧到区间 [min,max][min,max],并返回结果到一个新张量。
操作定义如下:
| min, if x_i < min
y_i = | x_i, if min <= x_i <= max
| max, if x_i > max
参数:
input (Tensor) – 输入张量
min (Number) – 限制范围下限
max (Number) – 限制范围上限
out (Tensor, optional) – 输出张量
示例:

tensor.clamp()
tensor.clamp(min, max, out=None) → Tensor
跟上面是一样的作用,tensor就是input
参数:
min (Number) – 限制范围下限
max (Number) – 限制范围上限
out (Tensor, optional) – 输出张量
示例:

参考:https://blog.csdn.net/qq_41375609/article/details/102828154
pytorch随笔的更多相关文章
- [源码解析] PyTorch 流水线并行实现 (1)--基础知识
[源码解析] PyTorch 流水线并行实现 (1)--基础知识 目录 [源码解析] PyTorch 流水线并行实现 (1)--基础知识 0x00 摘要 0x01 历史 1.1 GPipe 1.2 t ...
- [源码解析] PyTorch 流水线并行实现 (2)--如何划分模型
[源码解析] PyTorch 流水线并行实现 (2)--如何划分模型 目录 [源码解析] PyTorch 流水线并行实现 (2)--如何划分模型 0x00 摘要 0x01 问题 0x01 自动平衡 1 ...
- [源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统
[源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统 目录 [源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统 0x00 摘要 0x01 分割小批次 ...
- [源码解析] PyTorch 流水线并行实现 (4)--前向计算
[源码解析] PyTorch 流水线并行实现 (4)--前向计算 目录 [源码解析] PyTorch 流水线并行实现 (4)--前向计算 0x00 摘要 0x01 论文 1.1 引论 1.1.1 数据 ...
- [源码解析] PyTorch 流水线并行实现 (5)--计算依赖
[源码解析] PyTorch 流水线并行实现 (5)--计算依赖 目录 [源码解析] PyTorch 流水线并行实现 (5)--计算依赖 0x00 摘要 0x01 前文回顾 0x02 计算依赖 0x0 ...
- [源码解析] PyTorch 流水线并行实现 (6)--并行计算
[源码解析] PyTorch 流水线并行实现 (6)--并行计算 目录 [源码解析] PyTorch 流水线并行实现 (6)--并行计算 0x00 摘要 0x01 总体架构 1.1 使用 1.2 前向 ...
- AI人工智能系列随笔
初探 AI人工智能系列随笔:syntaxnet 初探(1)
- 【置顶】CoreCLR系列随笔
CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...
- C++随笔:.NET CoreCLR之GC探索(4)
今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...
随机推荐
- Linux用户和用户组管理命令
一.用户管理命令 1.useradd 创建用户或更新默认新用户的信息 使用方法 useradd [options] 用户名 选项: useradd -u 指定UID具体数值, ...
- JSON对象和字符串的收发(JS客户端用typeof()进行判断非常重要)
Ajax前台向后台传递对象: 数据准备 将js对象或者json对象转换为json字符串在Ajax传递,在后台中再将json字符串转换为json对象,再转换为java对象或在前端和后端构造一样的数据结构 ...
- java小项目之:抽奖系统!java初学者必备(内附源码)
[Java]Java摇奖源码,Java抽奖源码,Java随机抽奖源码 任务描述 本次任务要求为某商场开发一套幸运抽奖系统,客户必须首先注册成为该商场会员,会员登录成功后,就可以参加抽奖活动了.注册 用 ...
- 总结了一下 Vue.nextTick() 的原理和用途
对于 Vue.nextTick 方法,自己有些疑惑.在查询了各种资料后,总结了一下其原理和用途,如有错误,请不吝赐教. 概览 官方文档说明: 用法: 在下次 DOM 更新循环结束之后执行延迟回调.在修 ...
- IOS TableView 用法
1.在视图上创建TableView( 拖控件),为ViewController创建UITableView属性(链接至TableView)和NSArray属性(存储数据) ViewController. ...
- SQL SERVER查询数据库所有的表名/字段
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='subject' --表名 1.利用sysobjects系统表 在这个表中,在数据 ...
- 前端学习笔记系列一:4 vue中@click.native
.native - listen for a native event on the root element of component. 作用:[给组件绑定原生事件] 例子:如果使用router-l ...
- vmware fusion 进入 BIOS
要进入bios有三种方法:1.>启动的时候按F2即可进入bios进行一些启动盘等选项的操作.但是,启动的时候很难第一时间按F2成功进入bios, 2.>修改vmware 进入bios之前的 ...
- Codeforces 1294D - MEX maximizing
思维,真的很巧妙啊,看了以下博客 https://www.cnblogs.com/stelayuri/p/12230033.html
- Python测试进阶——(4)Python程序监控、存储、分析并可视化CPU和内存利用率
monitor190617.py 监控cpu和内存利用率信息,组织成json格式,并写入到 record.txt 文件中: import psutil import time import json ...