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获取本地计算机名字的方法
Apr 29 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
python实现五子棋人机对战游戏
Mar 25 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
扩展Django admin的list_filter()可使用范围方法
Aug 21 Python
python破解bilibili滑动验证码登录功能
Sep 11 Python
np.dot()函数的用法详解
Jan 17 Python
django3.02模板中的超链接配置实例代码
Feb 04 Python
Python如何安装第三方模块
May 28 Python
Python 存取npy格式数据实例
Jul 01 Python
使用python求斐波那契数列中第n个数的值示例代码
Jul 26 Python
Python基础之元编程知识总结
May 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实现清除wordpress里恶意代码
2015/10/21 PHP
php 的反射详解及示例代码
2016/08/25 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
Python isinstance判断对象类型
2008/09/06 Python
Python实现的tab文件操作类分享
2014/11/20 Python
python+Django+apache的配置方法详解
2016/06/01 Python
python机器学习库常用汇总
2017/11/15 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
如何使用Python 打印各种三角形
2019/06/28 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
如何基于python实现归一化处理
2020/01/20 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
高一学生期末评语
2014/04/25 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL
Python OpenGL基本配置方式
2022/05/20 Python