Pytorch之view及view_as使用详解
作者:啧啧啧biubiu 发布时间:2023-10-09 23:10:34
标签:Pytorch,view,view,as
view()函数是在torch.Tensor.view()下的一个函数,可以有tensor调用,也可以有variable调用。
其作用在于返回和原tensor数据个数相同,但size不同的tensor
【Numpy中的size是元素个数,但是在Pytorch中size等价为Numpy中的shape】
view函数的-1参数的作用在于基于另一参数,自动计算该维度的大小
很重要的一点
view函数只能由于contiguous的张量上,具体而言,就是在内存中连续存储的张量。
具体而言,可以参看 https://www.jb51.net/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]])
来源:https://blog.csdn.net/qq_37385726/article/details/81738518


猜你喜欢
- 对象的创建模式Object 构造函数模式:先创建空对象,再动态添加属性和方法。适用场景:初始时对象内部数据不确定。存在问题:语句太多(这个问
- 问题: jsp中想要输出的中文被显示成“?” 解决方法 : 在eclipse-windows- preferences中 搜索jsp , E
- MediaPipe概述谷歌开源MediaPipe于2019年6月首次推出。它的目标是通过提供一些集成的计算机视觉和机器学习功能,使我们的生活
- 存储和读取ASCII码形式的byte数据Python可以存byte数据到txt,但不要用str的方式直接存,转成数字列表储存,这样方便读取L
- django外键使用 一对一因为django中处于安全和方便将数据库中的表封装成模型,所以很多sql原生的功能无法使用, 比如 left j
- Python安装为什么默认安装到c盘?所有的软件如果你不对安装过程的路径进行设置的话都是默认安装到c盘的,不仅仅是Python。那安装到c盘
- 有的时候,我们为了保持网页的美观,需要将较长的文字在一定长度时截断。比如我们希望在列表中显示文章标题的前15个字,那么一个这样的标题:“rs
- 脚手架vue-cli 搭建的项目,build后放于服务器上,发现其他资源全部变成静态加载成功,但路由视图为空,最初以为是webpack打包的
- 环境win10, python3.7,pyinstaller3.6一 下载pyinstaller(1)cmd中pip install pyi
- 安装Go1.15版本 大纲 Windows安装GoLinux安装GoMacOS安装GoDocker安装Go总结视频地址:https://ww
- CSV means Comma Separated Values. It is plain text (ansi).The CSV (&qu
- 1、MySQL下载1.1下载MySQL8.0.26安装与卸载的完整步骤记录MySQL关是一种关系数据库管理系统,所使用的 SQL 语言是用于
- 在默认情况下,大多数浏览器都会将有序列表中的数字序列的与其列表文字内容显示为相同的字体。这篇快速教程将教你如何使用有序列表(ol)和段落(p
- 1. 简介Python 读写文件的二进制数据需要使用到struct模块,进行C/C++与Python数据格式的转换。2. struct模块介
- 本文实例为大家分享了微信小程序实现顶部搜索框的具体代码,供大家参考,具体内容如下这是一个最简单的顶部搜索框,代码如下wxml<view
- clear()方法将删除字典中的所有项目(清空字典)语法以下是clear()方法的语法:dict.clear()参数
- pyecharts 是一个用于生成 Echarts 图表的类库。 Echarts 是百度开源的一个数据可视化 JS 库。主要用于数据可视化。
- 0.目录1.前言2.安装python3.使用pip下载、安装包3.1 安装Scrapy3.2 安装PyQt3.3 同时安装多个包3.4 pi
- 代码:--库是否存在if exists(select * from master..sysdatabases where name=N
- 我是从去年初开始学习web标准的,两年下来也有些心得。最近跳槽了正好闲在家里,写一些出来和大家交流一下。1对于web标准和W3C XHTML