pytorch中unsqueeze用法说明

devtools/2024/9/23 10:23:13/

在指定的位置插入一个维度,有两个参数,input是输入的tensor,dim是要插到的维度

需要注意的是dim的范围是[-input.dim()-1, input.dim()+1),是一个左闭右开的区间,当dim为负值时,会自动转换为dim = dim+input.dim()+1,类似于使用负数对python列表进行切片。

python">import torcha = torch.randn(2,5)
print(a)print("")
b = a.unsqueeze(0)
print(b.shape)print("")
c = a.unsqueeze(a.dim())
print(c.shape)输出:
tensor([[-0.4734,  0.4115, -0.9415, -1.1280, -0.1065],[ 0.1613,  1.2594,  1.1261,  1.3881,  0.1112]])torch.Size([1, 2, 5])torch.Size([2, 5, 1])

以上是二维数据情况:

首先生成了一个二维矩阵,其大小为[2,5]

然后,在0维度上插入一个维度,可以看到现在新矩阵a的形状变为[1,2,5],第0维度的大小默认是1

最后,在最后一个维度上插入一个维度,形状变为[2, 5, 1]

python">a=torch.rand(2,3,2)print("")
print("torch.unsqueeze(a,3) size: {}".format(torch.unsqueeze(a,3).size()))print("")
print("torch.unsqueeze(a,2) size: {}".format(torch.unsqueeze(a,2).size()))print("")
print("torch.unsqueeze(a,1) size: {}".format(torch.unsqueeze(a,1).size()))print("")
print("torch.unsqueeze(a,0) size: {}".format(torch.unsqueeze(a,0).size()))print("")
print("torch.unsqueeze(a,-1) size: {}".format(torch.unsqueeze(a,-1).size()))print("")
print("torch.unsqueeze(a,-2) size: {}".format(torch.unsqueeze(a,-2).size()))print("")
print("torch.unsqueeze(a,-3) size: {}".format(torch.unsqueeze(a,-3).size()))print("")
print("torch.unsqueeze(a,-4) size: {}".format(torch.unsqueeze(a,-4).size()))输出:
torch.unsqueeze(a,3) size: torch.Size([2, 3, 2, 1])torch.unsqueeze(a,2) size: torch.Size([2, 3, 1, 2])torch.unsqueeze(a,1) size: torch.Size([2, 1, 3, 2])torch.unsqueeze(a,0) size: torch.Size([1, 2, 3, 2])torch.unsqueeze(a,-1) size: torch.Size([2, 3, 2, 1])torch.unsqueeze(a,-2) size: torch.Size([2, 3, 1, 2])torch.unsqueeze(a,-3) size: torch.Size([2, 1, 3, 2])torch.unsqueeze(a,-4) size: torch.Size([1, 2, 3, 2])

对于三维数据input.dim() = 3,因此dim的范围是[-4, 4)


http://www.ppmy.cn/devtools/6716.html

相关文章

web server apache tomcat11-04-manager 如何管理?

前言 整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。 开源项目 从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。 系列文章 web server apache tomcat11-01-官方文档入门介绍 web…

C语言 | Leetcode C语言题解之第29题两数相除

题目&#xff1a; 题解&#xff1a; int divide(int dividend, int divisor){int cnt 0;int sign 1;if ((dividend ^ divisor) < 0) { // 两数任意一个为负数sign -1;}if (divisor INT_MIN) { // 除数边界值特殊处理if (dividend INT_MIN) {return 1;} else {return 0…

elasticSearch从零整合springboot项目实操

type会被弃用 &#xff0c;就是说之后的elasticSearch中只会存在 索引&#xff08;indices&#xff09; 和 一行&#xff08;document&#xff09; 和字段&#xff08;fields&#xff09; elasticSearch 和solr的区别最大的就是 es对应的 是 json的格式 。 solr有xml和josn等…

【备战算法岗】—— 控制模块复习(持续更新!!!)

1 控制理论基础 1.1 控制模块概述 输入&#xff1a;轨迹线Reference、地图信息、定位信息、车辆反馈信息 输出&#xff1a;刹车、油门、转向 CANBUS&#xff1a;车辆底盘交互协议 参考博客&#xff1a;Apollo CANBUS模块解析 apollo&#xff1a;canbus模块&#xff08;1&…

selenium_定位输入框并输入值_id

定位id号 from time import sleepfrom selenium import webdriver# 获取浏览器对象 driver webdriver.Edge() # 打开 url url r"C:\Users\黄永生\Desktop\软件测试\tpshop\web自动化_day01_课件笔记资料代码\02_其他资料\注册A.html" driver.get(url) # 查找元素 用…

现在复习计算机考研408怎么复习?

考研是一场持久战&#xff0c;需要科学规划和备考&#xff0c;针对这个问题&#xff0c;小编在这里给大家总结一下老师建议的科学备考408思路&#xff1a; 01 先学C语言 在学408之前需要学一下C语言&#xff0c;特别是零基础跨考的同学&#xff0c;建议一定要学习C语言。 建议大…

VMWare Ubuntu压缩虚拟磁盘

VMWare中ubuntu会越用越大&#xff0c;直到占满预分配的空间 即使系统里没有那么多东西 命令清理 开机->open Terminal sudo vmware-toolbox-cmd disk shrink /关机-> 编辑虚拟机设置->硬盘->碎片整理&压缩 磁盘应用 开机->disk usage analyzer(应用) …

写代码的修养

看山是山&#xff0c;看水是水 此境界 对业务的思考是浅层的&#xff0c;代码写的不通用&#xff0c;扩展性差&#xff0c;表现在无设计模式 看山不是山&#xff0c;看水不是水 此境界 对业务的思考是中层的&#xff0c;代码写的通用&#xff0c;扩展性好&#xff0c;表现为…