Pytorch之view及view_as使用详解


Posted in Python onDecember 31, 2019

view()函数是在torch.Tensor.view()下的一个函数,可以有tensor调用,也可以有variable调用。

其作用在于返回和原tensor数据个数相同,但size不同的tensor

【Numpy中的size是元素个数,但是在Pytorch中size等价为Numpy中的shape】

view函数的-1参数的作用在于基于另一参数,自动计算该维度的大小

很重要的一点

view函数只能由于contiguous的张量上,具体而言,就是在内存中连续存储的张量。

具体而言,可以参看 https://3water.com/article/177564.htm

所以,当tensor之前调用了transpose, permute函数就会是tensor内存中变得不再连续,就不能调用view函数。

所以,应该提前做tensor.contiguous()的操作

view函数与Pytorch0.4中新增的reshape的区别

reshape函数调用是不依赖于tensor在内存中是不是连续的。

reshape ≈ tensor.contiguous().view

代码

import numpy as np
import torch
from torch.autograd import Variable
 
x = torch.Tensor(2,2,2)
print(x)
 
y = x.view(1,8)
print(y)
 
z = x.view(-1,4) # the size -1 is inferred from other dimensions
print(z)
 
t = x.view(8)
print(t)

输出

tensor([[[1.3712e-14, 6.4069e+02],
   [4.3066e+21, 1.1824e+22]],

  [[4.3066e+21, 6.3828e+28],
   [3.8016e-39, 0.0000e+00]]])

#x.view(1,8)生成的是[1,8]的张量
tensor([[1.3712e-14, 6.4069e+02, 4.3066e+21, 1.1824e+22, 4.3066e+21, 6.3828e+28,
   3.8016e-39, 0.0000e+00]])

#x.view(-1,4)其中-1是在4下的另一个维度的大小,也就是8/4=2,所以生成的是[2,4]的张量
tensor([[1.3712e-14, 6.4069e+02, 4.3066e+21, 1.1824e+22],
  [4.3066e+21, 6.3828e+28, 3.8016e-39, 0.0000e+00]])

x.view(8)生成的是[8,]的张量,是个数组
tensor([1.3712e-14, 6.4069e+02, 4.3066e+21, 1.1824e+22, 4.3066e+21, 6.3828e+28,
  3.8016e-39, 0.0000e+00])

view_as

返回被视作与给定的tensor相同大小的原tensor。 等效于:

self.view(tensor.size())

具体用法为:

代码

a = torch.Tensor(2, 4)
b = a.view_as(torch.Tensor(4, 2))
print (b)

输出

tensor([[1.3712e-14, 6.4069e+02],
  [4.3066e+21, 1.1824e+22],
  [4.3066e+21, 6.3828e+28],
  [3.8016e-39, 0.0000e+00]])

以上这篇Pytorch之view及view_as使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中处理XML的教程
Apr 29 Python
django开发教程之利用缓存文件进行页面缓存的方法
Nov 10 Python
Python快速查找list中相同部分的方法
Jun 27 Python
numpy matrix和array的乘和加实例
Jun 28 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
Python画图实现同一结点多个柱状图的示例
Jul 07 Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 Python
python opencv进行图像拼接
Mar 27 Python
python实现udp聊天窗口
Mar 31 Python
python程序需要编译吗
Jun 19 Python
python suds访问webservice服务实现
Jun 26 Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
Dec 31 #Python
如何基于Python创建目录文件夹
Dec 31 #Python
Pytorch之contiguous的用法
Dec 31 #Python
python实现将json多行数据传入到mysql中使用
Dec 31 #Python
Pytorch之Variable的用法
Dec 31 #Python
Pytorch 多块GPU的使用详解
Dec 31 #Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 #Python
You might like
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
用php解析html的实现代码
2011/08/08 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
phpstudy后门rce批量利用脚本的实现
2019/12/12 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
js图片轮播插件的封装
2017/07/21 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
Python3爬楼梯算法示例
2019/03/04 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
Django密码存储策略分析
2020/01/09 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
十岁生日答谢词
2015/01/05 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
大学生入党自我鉴定范文
2019/06/21 职场文书