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程序员开发中常犯的10个错误
Jul 07 Python
python实现根据图标提取分类应用程序实例
Sep 28 Python
Python标准库之循环器(itertools)介绍
Nov 25 Python
python通过yield实现数组全排列的方法
Mar 18 Python
用map函数来完成Python并行任务的简单示例
Apr 02 Python
全面理解Python中self的用法
Jun 04 Python
python PyTorch预训练示例
Feb 11 Python
python实现逐个读取txt字符并修改
Dec 24 Python
win10从零安装配置pytorch全过程图文详解
May 08 Python
Django 构建模板form表单的两种方法
Jun 14 Python
关于python中readlines函数的参数hint的相关知识总结
Jun 24 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 14 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
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
php实现文件预览功能
2017/05/23 PHP
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
pytyon 带有重复的全排列
2013/08/13 Python
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python ftp上传文件
2016/02/13 Python
python 类详解及简单实例
2017/03/24 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
python 实现简易的记事本
2020/11/30 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
高校毕业生登记表自我鉴定
2013/11/03 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
新年团拜会主持词
2014/04/02 职场文书
高中家长寄语
2014/04/02 职场文书
师范生求职信
2014/06/14 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js