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里隐藏的“禅”
Jun 16 Python
Python编程之属性和方法实例详解
May 19 Python
python使用reportlab实现图片转换成pdf的方法
May 22 Python
Python 中的with关键字使用详解
Sep 11 Python
深入浅出分析Python装饰器用法
Jul 28 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
Pycharm小白级简单使用教程
Jan 08 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
基于Tensorflow高阶读写教程
Feb 10 Python
Python实现小黑屋游戏的完整实例
Jan 06 Python
Python如何利用正则表达式爬取网页信息及图片
Apr 17 Python
Python机器学习实战之k-近邻算法的实现
Nov 27 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的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
PHP打印输出函数汇总
2016/08/28 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
2018/10/18 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
jquery ajax提交表单数据的两种方式
2009/11/24 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
python根据出生日期获得年龄的方法
2015/03/31 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
python PIL/cv2/base64相互转换实例
2020/01/09 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
视图的作用
2014/12/19 面试题
铭立家具面试题
2012/12/06 面试题
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫