PyTorch概述(六)---View

Tensor.view(*shape)-->Tensor

  • 返回一个新的张量同之前的张量具有相同的数据,但是具有不同的形状;
  • 返回的张量同之前的张量共享相同的数据,必须具有相同数目的元素,可能具有不同的形状;
  • 对于经过view操作的张量,新的尺寸必须同原始的张量大小和步长兼容;
  • 每一个新的观察维度必须或者是一个原始维度的子空间;
  • 或者跨越原始维度,满足以下条件:

\forall i=d,...,d+k-1,

stride[i]=stride[i+1]\times size[i+1]

  • 不满足上述条件,在不拷贝原始张量的情况下将不会view成功;
  • 当不了解是否一个view可以执行时,推荐使用reshape();
  • reshape()返回一个view如果形状是兼容的,且复制原始的张量,等效于调用contiguous();

参数

  • shape(torch.Size or int)---要求的尺寸

实例

import torchx=torch.randn(4,4)
x.size()
#torch.Size([4,4]}
y=x.view(16)
y.size()
#torch.Size([16])
z=x.view(-1,8) #the size -1 is inferred from other dimensions
z.size()
#torch.Size([2,8])a=torch.randn(1,2,3,4)
a.size()
#torch.Size([1,2,3,4])
b=a.transpose(1,2) #swap 2nd and 3rd dimension
b.size()
#torch.Size([1,3,2,4])
c=a.view(1,3,2,4) #Does not change tensor layout in memeory
c.size()
#torch.Size([1,3,2,4])
torch.equal(b,c)
#Flase

view(dtype)-->Tensor

  • 返回一个同原始张量具有相同数据的新张量,但是具有不同的数据类型;
  • 如果dtype的单元尺寸不同于原始张量dtype的尺寸;
  • 那么输出的最后一个维度的大小将按比例缩放;
  • 比如:如果dtype的单元尺寸两倍于原始dtype的单元尺寸;
  • 那么原始张量中的最后一个维度中的单元,两两一组进行合并;
  • 新张量的最后一个维度的尺寸将会是原始张量的最后一个维度的一半;
  • 如果新的张量的dtype单元尺寸是原始张量的dtype单元尺寸的一半;
  • 那么原始张量中的最后一个维度将一分为2;
  • 新张量的最后一个维度的尺寸将会使原始张量最后一个维度的2倍;
  • 以上实例描述可能得话,必须满足以下条件:
  • self.dim()必须大于0;
  • self.stride(-1)必须为1;
  • 还有,如果dtype的单元尺寸大于原始张量的dtype的尺寸,以下条件必须同样满足:
  • self.size(-1)必须是对dtype单元尺寸的比率可整除的;
  • self.storage_offset()必须是对dtype单元尺寸的比率可整除的;
  • 所有维度的步长,除了最后一个维度外,必须是对dtype单元尺寸的比率可整除的;
  • 如果以上条件任一不满足,将会出错;
  • torchscript不支持上述描述的这种重载,在torchscript中使用将会引起未定义的错误;

参数

  • dtype(torch.dtype)---要求的dtype类型

实例

import torchx=torch.randn(4,4)
x
#tensor([[ 0.9482, -0.0310,  1.4999, -0.5316],
#       [-0.1520,  0.7472,  0.5617, -0.8649],
#       [-2.4724, -0.0334, -0.2976, -0.8499],
#       [-0.2109,  1.9913, -0.9607, -0.6123]])
x.dtype
#torch.float32y=x.view(torch.int32)
y
# tensor([[ 1064483442, -1124191867,  1069546515, -1089989247],
#         [-1105482831,  1061112040,  1057999968, -1084397505],
#         [-1071760287, -1123489973, -1097310419, -1084649136],
#         [-1101533110,  1073668768, -1082790149, -1088634448]],
#     dtype=torch.int32)
y[0,0]=1000000000
x
# tensor([[ 0.0047, -0.0310,  1.4999, -0.5316],
#         [-0.1520,  0.7472,  0.5617, -0.8649],
#         [-2.4724, -0.0334, -0.2976, -0.8499],
#         [-0.2109,  1.9913, -0.9607, -0.6123]])
x.view(torch.cfloat)
# tensor([[ 0.0047-0.0310j,  1.4999-0.5316j],
#         [-0.1520+0.7472j,  0.5617-0.8649j],
#         [-2.4724-0.0334j, -0.2976-0.8499j],
#         [-0.2109+1.9913j, -0.9607-0.6123j]])
x.view(torch.cfloat).size()
#torch.Size([4,2])
x.view(torch.uint8)
# tensor([[  0, 202, 154,  59, 182, 243, 253, 188, 185, 252, 191,  63, 240,  22,
#            8, 191],
#         [227, 165,  27, 190, 128,  72,  63,  63, 146, 203,  15,  63,  22, 106,
#           93, 191],
#         [205,  59,  30, 192, 112, 206,   8, 189,   7,  95, 152, 190,  12, 147,
#           89, 191],
#         [ 43, 246,  87, 190, 235, 226, 254,  63, 111, 240, 117, 191, 177, 191,
#           28, 191]], dtype=torch.uint8)
x.view(torch.uint8).size()
#torch.Size([4,16])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python中操作MySQL和SQL Server数据库的基础与实战【第97篇—MySQL数据库】

Python中操作MySQL和SQL Server数据库的基础与实战 在Python中,我们经常需要与各种数据库进行交互,其中MySQL和SQL Server是两个常见的选择。本文将介绍如何使用pymysql和pymssql库进行基本的数据库操作,并通过实际代码示例来展示这些操作。…

Visual Studio:Entity设置表之间的关联关系

1、选择表并右键-》新增-》关联 2、设置关联的表及关联关系并“确定”即可

真的是性能优化(压测)-纯思想

文章目录 概要优化指标-MD都是文字看看就行性能优化操作1、代码优化:2、系统配置与环境优化:3、架构与设计:4、~~实施与监控:~~5、~~开发流程和环境管理:~~ 总结 概要 性能优化是一个持续的过程,需要监控、…

神经网络系列---感知机(Neuron)

文章目录 感知机(Neuron)感知机(Neuron)的决策函数可以表示为:感知机(Neuron)的学习算法主要包括以下步骤:感知机可以实现逻辑运算中的AND、OR、NOT和异或(XOR)运算。 感知机(Neuron) 感知机(Neuron)是一种简单而有效的二分类算法,用于将输入…

android input命令支持多指触摸成果展示-千里马framework实战开发

hi input命令扩展提示部分 generic_x86_64:/ # input -h Error: Unknown command: -h Usage: input [<source>] <command> [<arg>...]The source…

数智化转型的三大关键点

一、重新认识数智化转型 消费红利时代&#xff0c;伴随中国宏观经济向好发展&#xff0c;相当一部分企业可以轻松实现快速增长&#xff0c;如同搭乘了一架高速运转的电梯一路飞升。然而&#xff0c;随着宏观经济增速放缓&#xff0c;时代的电梯逐渐失去效力&#xff0c;中国商…

python3 Flask jwt 简易token认证实例

直接上代码 from flask import Flask, jsonify, request, make_response import jwt import datetime from functools import wrapsapp Flask(__name__)# 这是一个示例密钥&#xff0c;实际应用中应该使用一个复杂且随机的密钥 app.config[SECRET_KEY] your_secret_keydef t…

第九节HarmonyOS 常用基础组件24-Navigation

1、描述 Navigation组件一般作为Page页面的根容器&#xff0c;通过属性设置来展示的标题栏、工具栏、导航栏等。 2、子组件 可以包含子组件&#xff0c;推荐与NavRouter组件搭配使用。 3、接口 Navigation() 4、属性 名称 参数类型 描述 title string|NavigationComm…

源代码管理——码云Gitee

目录 Git安装 Gitee配置SSH 源代码管理常规操作 1.idea配置git 2.常规操作 Git安装 安装Git是进行源代码管理的基本步骤之一。以下是在本地安装Git的通用步骤&#xff0c;适用于Windows系统&#xff1a; 下载Git安装程序: 访问Git官网的下载页面&#xff1a;Git官网下载地…

【前端素材】推荐优质后台管理系统Welly平台模板(附源码)

一、需求分析 后台管理系统&#xff08;或称作管理后台、管理系统、后台管理平台&#xff09;是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成&#xff0c;为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

现在学Oracle是49年入国军么?

今天周末&#xff0c;不聊技术&#xff0c;聊聊大家说的最多的一个话题 先说明一下&#xff0c;防止挨喷&#x1f606; 本人并不是职业dba&#xff0c;对数据库就是爱好&#xff0c;偶尔兼职&#xff0c;以下仅个人观点分析&#xff0c;如有不同观点请轻喷&#xff0c;哈哈&…

【数据结构和算法初阶(c语言)】数据结构前言,初识数据结构(给你一个选择学习数据结构和算法的理由)

1.何为数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的 数据元素的集合。本质来讲就是在内存中去管理数据方式比如我们的增删查改。在内存中管理数据的方式有很多种&#xff08;比如数组结构、链式结构、树型结…

【Java程序员面试专栏 数据结构】六 高频面试算法题:字符串

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊数组,包括数组合并,滑动窗口解决最长无重复子数组问题,图形法解下一个排列问题,以及一些常见的二维矩阵问题,所以放到一篇Blog中集中练习 题目…

openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议

文章目录 openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议 openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议 目前LLVM在数据库内核侧已默认打开&#xff0c;用户可结合上述的分析进行配置&#xff0c;总体建议如下&#xff1a; 设置合理的wor…

Nginx基本操作

目录 引言 一、Nginx配置文件详解 &#xff08;一&#xff09;配置文件 &#xff08;二&#xff09;模块 二、全局配置文件 &#xff08;一&#xff09;关闭版本或修改版本 1.关闭版本号 2.修改版本信息 &#xff08;二&#xff09;修改启动的进程数 &#xff08;三&…

JavaScript+PHP实现视频文件分片上传

摘要 视频文件分片上传&#xff0c;整体思路是利用JavaScript将文件切片&#xff0c;然后循环调用上传接口 upload.php 将切片上传到服务器。这样将由原来的一个大文件上传变为多个小文件同时上传&#xff0c;节省了上传时间&#xff0c;这就是文件分片上传的其中一个好处。 上…

【黑马程序员】2、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址&#xff1a;【黑马程序员前端TypeScript教程&#xff0c;TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 2、TypeScript初体验 2.1 安装编译TS的工…

hbuilderx创建、运行uni-app

创建uni-app 在点击工具栏里的文件 -> 新建 -> 项目&#xff1a; 选择uni-app类型&#xff0c;输入工程名&#xff0c;选择模板&#xff0c;点击创建&#xff0c;即可成功创建。 uni-app自带的模板有 Hello uni-app &#xff0c;是官方的组件和API示例。还有一个重要模…

解决easyExcel模板填充时转义字符\{xxx\}失效

正常我们在使用easyExcel进行模板填充时&#xff0c;定义的变量会填充好对应的实际数据&#xff0c;未定义的变量会被清空&#xff0c;但是如果这个未定义的变量其实是模板的一部分&#xff0c;那么清空了就出错了。 在这张图里&#xff0c;上面的是模板填充后导出的文件&…

Guitar Pro8.2吉他软件2024中文版功能特点介绍

Guitar Pro 8.2是一款功能强大的吉他乐谱软件&#xff0c;专为吉他手、音乐制作人和音乐爱好者设计。它提供了丰富的功能&#xff0c;帮助用户轻松创建、编辑、打印和分享吉他乐谱。以下是Guitar Pro 8.2的主要功能特点&#xff1a; Guitar Pro 2024 win-安装包下载如下&#x…