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基础教程之数字处理(math)模块详解
Mar 25 Python
使用Python解析JSON数据的基本方法
Oct 15 Python
python SMTP实现发送带附件电子邮件
May 22 Python
python对list中的每个元素进行某种操作的方法
Jun 29 Python
python实现根据文件关键字进行切分为多个文件的示例
Dec 10 Python
django 类视图的使用方法详解
Jul 24 Python
python 字典 setdefault()和get()方法比较详解
Aug 07 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 Python
python的slice notation的特殊用法详解
Dec 27 Python
tensorflow 变长序列存储实例
Jan 20 Python
python 两个一样的字符串用==结果为false问题的解决
Mar 12 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Jan 24 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&&mysql)三
2006/10/09 PHP
加强版phplib的DB类
2008/03/31 PHP
php常用的url处理函数总结
2014/11/19 PHP
Yii2中DropDownList简单用法示例
2016/07/18 PHP
Zend Framework路由器用法实例详解
2016/12/11 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
用JavaScript隐藏控件的方法
2009/09/21 Javascript
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
详解小程序横屏方案对比
2020/06/28 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
利用python画一颗心的方法示例
2017/01/31 Python
python读写json文件的简单实现
2017/04/11 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
Python中的延迟绑定原理详解
2019/10/11 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
python实现井字棋小游戏
2020/03/04 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
事业单位鉴定材料
2014/05/25 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS