Pytorch学习- 小型知识点汇总 unsqueeze()/squeeze() 和 .max() 等等
1. unsqueeze(input, dim, out=None)函数 - 升维作用
参考链接
在指定的地方上增加一个维度
0(-2) [行扩展]: 表示在张量最外层增加一个中括号变成第一维
1(-1) [列扩展]:表示
>>> input = torch.arange(0,6)
>>> input
tensor([0, 1, 2, 3, 4, 5])
>>> input.shape
torch.Size([6])>>> print(input.unsqueeze(0))
tensor([[0, 1, 2, 3, 4, 5]])
>>> print(input.unsqueeze(0).shape)
torch.Size([1, 6])>>> print(input.unsqueeze(1))
tensor([[0],[1],[2],[3],[4],[5]])
>>> print(input.unsqueeze(1).shape)
torch.Size([6, 1])
2. squeeze(input,dim,out=None) 降维函数
将输入张量形状中的1 去除并返回。 如果输入是形如(A×1×B×1×C×1×D),那么输出形状就为: (A×B×C×D)
小例子
如果是一个列表的tensor例如x变量想要转换成相同维度的tensor可以采用如下方式:
1)循环遍历列表中每个张量s,先使用unsqueeze(0)将每个张量s升维。
形状由torch.Size([3])变为torch.Size([1, 3])
【变化前:tensor([0, 1, 2]) 变化后:tensor([[0, 1, 2]])】
2)同时使用torch.cat()将其拼接起来 dim=0 表示横向拼接,否则竖向拼接
dim = 0 结果:
tensor([[0, 1, 2],[1, 0, 2],[1, 2, 0],[2, 1, 0]])
dim = 1 结果:
tensor([[0, 1, 2, 1, 0, 2, 1, 2, 0, 2, 1, 0]])
>>> import torch
>>> x = [torch.tensor([0,1,2]),torch.tensor([1,0,2]),torch.tensor([1,2,0]),torch.tensor([2,1,0]),]
>>> x
[tensor([0, 1, 2]), tensor([1, 0, 2]), tensor([1, 2, 0]), tensor([2, 1, 0])]
>>> x = torch.cat([s.unsqueeze(0) for s in l],0)
>>> x
tensor([[0, 1, 2],[1, 0, 2],[1, 2, 0],[2, 1, 0]])
3. max()的用法
更加详细参见我的另一篇文章:Pytorch学习-torch.max()和min()深度解析
non_final_next_states.max(1)[1].detach()
# 行维度 .max(1)[0] 返回values的最大值列表 .max(1)[1]返回最大值index列表
# 列维度 .max(0)[0] 返回values的最大值列表 .max(0)[1]返回最大值index列表
4. detach() 和detach_()
参考链接
torch.detach() - 返回一个新的没有梯度的tensor [生成一个新的tensor]
返回一个新的tensor,从当前计算图中分离下来的,但是仍指向原变量的存放位置,不同之处只是requires_grad为false,得到的这个tensor永远不需要计算其梯度,不具有grad。
即使之后重新将它的requires_grad置为true,它也不会具有梯度grad
torch.detach_() - 直接修改该tensor[对其本身的更改],将其设置为无自动计算梯度的张量
将一个tensor从创建它的图中分离,并把它设置成叶子tensor
5. torch.Tensor和torch.tensor的区别
参考
在Pytorch中,Tensor和tensor都用于生成新的张量。
torch.Tensor() 生成单精度浮点型张量
- torch.Tensor()是Python类,更明确的说,是默认张量类型torch.FloatTensor()的别名,torch.Tensor([1,2]) 会调用Tensor类的构造函数__init__,生成单精度浮点类型的张量。
torch.tensor() 根据原始data生成对应类型的张量
torch.tensor()仅仅是Python的函数,函数原型是:
torch.tensor(data, dtype=None, device=None, requires_grad=False)
其中data可以是:list, tuple, array, scalar等类型。
torch.tensor()可以从data中的数据部分做拷贝(而不是直接引用),根据原始数据类型生成相应的torch.LongTensor,torch.FloatTensor,torch.DoubleTensor。
5.torch.cat() 的用法
参考链接
Pytorch学习- 小型知识点汇总 unsqueeze()/squeeze() 和 .max() 等等相关推荐
- 机器学习、深度学习面试知识点汇总
作者丨Oldpan 来源丨oldpan博客 编辑丨极市平台 导读 本文总结了一些秋招面试中会遇到的问题和一些重要的知识点,适合面试前突击和巩固基础知识. 前言 最近这段时间正临秋招,这篇文章是老潘在那 ...
- pytorch学习资源汇总
pytorch学习资源汇总 https://pytorchchina.com/2019/05/07/awesome-pytorch-chinese/ PyTorch学习教程.手册 PyTorch英文版 ...
- Pytorch view()、squeeze()、unsqueeze()、torch.max()
本篇博客主要向大家介绍Pytorch中view().squeeze().unsqueeze().torch.max()函数,这些函数虽然简单,但是在 神经网络编程总却经常用到,希望大家看了这篇博文能够 ...
- 前端小白学习路线及知识点汇总(三)-- JavaScript基础
前端小白学习路线及知识点汇总(三)-- JavaScript基础 一. JavaScript的组成 ECMAScript:由ECMA国际进行标准化的一门编程语言,往往被称为JavaScript或Jsc ...
- 新手必备 | 史上最全的PyTorch学习资源汇总
目录: PyTorch学习教程.手册 PyTorch视频教程 PyTorch项目资源 - NLP&PyTorch实战 - CV&PyTorch实战 PyTorch论 ...
- PyTorch学习笔记2:nn.Module、优化器、模型的保存和加载、TensorBoard
文章目录 一.nn.Module 1.1 nn.Module的调用 1.2 线性回归的实现 二.损失函数 三.优化器 3.1.1 SGD优化器 3.1.2 Adagrad优化器 3.2 分层学习率 3 ...
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...
- Pytorch学习-Task1
PyTorch学习-Task1:PyTorch张量计算与Numpy的转换 张量 Tensor 1.张量的定义 2.张量的运算 3.Tensor与Numpy类型的转换 4.自动求导 pytorch 与神 ...
最新文章
- Django 模板HTML转义和CSRF4.3
- 一图简述大数据技术生态圈
- php 去除二维数组中的包含某一个值的数组
- [蓝桥杯2015决赛]分机号-枚举(水题)
- jzoj1013-GCD与LCM【数论】
- 二叉树题目----5 平衡二叉树 AND 根据二叉树创建字符串
- 从未有过的空闲学校生活
- 数据结构知识点总结pdf_闭关修炼31天,“啃完”346页pdf,我终于四面拿下阿里offer!...
- laravel 配置邮件发件人_Jenkins中配置自动化测试项目
- Springboot项目启动报错:
- 撰写项目的解决方案要点解析
- CSS opacity - 实现图片半透明效果
- Proxmark3教程1:用PM3解密复制M1全加密门禁IC卡图文详细介绍
- 程序员应该每年更新自己的简历
- 1.18 物主代词 形容词 宾语从句
- c语言程序设计模拟卷视频,《C语言程序设计》模拟试卷A卷.doc
- 物联网背景的智慧农业 能否搭上顺风车
- 语音识别基本原理学习
- 计算机保研面试基础知识,华科计算机保研复试机试题目
- 关于R语言中时间类POSIXct和POSIXlt的一点儿学习收获
热门文章
- 【pointnet++点云识别】基于pointnet++的点云地理数据识别的MATLAB仿真
- 【system generator】基于system generator的根号运算系统实现
- elasticsearch 6.6 安装(CentOS 7.5) 修订
- tomcat端口被占用
- C# Azure 存储-分布式缓存Redis的新建配置查看
- Eclipse更改系统主题
- Java中使用SQLite数据库
- 决定把BLOG的文章从CU上同步过来
- cygwin不能执行make
- 《计算机组成与设计(ARM版)》读书笔记-第二章指令2