欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 一文解释pytorch 中的 squeeze() 和 unsqueeze()函数(全网最详细版)

一文解释pytorch 中的 squeeze() 和 unsqueeze()函数(全网最详细版)

2025/2/6 11:28:14 来源:https://blog.csdn.net/m0_67656158/article/details/145394372  浏览:    关键词:一文解释pytorch 中的 squeeze() 和 unsqueeze()函数(全网最详细版)

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀零基础入门PyTorch框架_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

目录

1. 前言

2. torch.squeeze(A,dim=a)

3. torch.unsqueeze(A,dim=a)

4. 总结


1. 前言

  • 👑《零基础入门PyTorch》专栏持续更新中,未来最少文章数量为60篇。由于专栏刚刚建立,促销价为9.9。后续将慢慢恢复原价至99.9🍉【在校大学生】评论区留言并私信我免费订阅
  • 👑《零基础入门PyTorch》专栏主要针对零基础入门的小伙伴。不需要Python基础,不需要深度学习基础,只要你愿意学,这一个专栏将真正让你做到零基础入门。
  • 🔥每例项目都包括理论讲解、数据集、源代码

正在更新中💹💹

🚨项目运行环境:

  • 平台:Window11
  • 语言环境:Python3.8
  • 运行环境1:PyCharm 2021.3
  • 运行环境2:Jupyter Notebook 7.3.2
  • 框架:PyTorch 2.5.1(CUDA11.8)

首先来看squeeze单词的含义:

关注一个词:挤压——》衍生到人工智能中:降维

再来看看unsqueeze单词的含义:

关注一个词:解压——》衍生到人工智能中:升维 

2. torch.squeeze(A,dim=a)

        torch.squeeze()函数的作用:减少张量维度

        torch.squeeze(A, a)函数的参数:A为要处理的张量,a表示压缩的维度(a=0表示压缩第一个维度)

注:

  1. 压缩操作只能针对维数为1的维度进行
  2. 如果指定的维度的维数大于1,那么操作将无效。
  3. 如果不指定维度N,那么默认选择所有维度,也就是将删除所有维数为1的维度。

🌟不指定维度,默认选择所有维度压缩。例如:一个1×1×2×3的tensor,squeeze()之后便成了2×3。存储的数据并没有发生变化,但是去除了“多余”的维度信息:

import torch
a = torch.Tensor([[[[4,3,4],[1,2,3]]]])
print(a.size())
b = torch.squeeze(a) #如果不指定维度N,那么将压缩所有维度为1的维度
print(b.size())


🌟如果维度的维数为1,则不会进行任何操作。例如:一个2×2 的tensor,squeeze()之后还是2×2:

import torch
x = torch.rand(2, 2)
print(x.size())
x = x.squeeze()
print(x.size())


🌟指定维度压缩。如果被指定的维度其维数为1,则压缩,反之不对该维度操作。例如:一个 1×1×2×3的tensor 指定第三个维度,由于其维数为2,因此不做压缩;指定第一个维度,由于其维数为1,因此做压缩:

import torch
a = torch.Tensor([[[[4,3,4],[1,2,3]]]])
print(a.size())
b = torch.squeeze(a) #如果不指定维度N,那么将压缩所有维度为1的维度
print(b.size())
c = torch.squeeze(a,2) # 指定维度压缩。如果被指定的维度的维数为1,则压缩,反之不对该维度操作:
print(c.size())
d = torch.squeeze(a,0) # 指定维度压缩。如果被指定的维度的维数为1,则压缩,反之不对该维度操作:
print(d.size())

3. torch.unsqueeze(A,dim=a)

torch.unsqueeze 是 PyTorch 中的一个函数,用于在指定的维度上插入一个大小为1的维度

对于改变张量的形状(形状变换)非常有用,特别是在需要对张量的形状进行匹配以便进行后续操作时

大致用法如下:

torch.unsqueeze(input, dim)
  • input输入的张量。
  • dim要插入的维度索引。索引计算从0开始,若是负数则从末尾开始计算。

🌟在零维度上插入一个新维度

import torch# 创建一个1D张量
x = torch.tensor([1, 2, 3])
print("原始张量:", x)
print("原始张量形状:", x.size())# 在0维度上插入一个新的维度
x_unsqueezed = torch.unsqueeze(x, 0)
print("插入新维度后的张量:", x_unsqueezed)
print("插入新维度后的张量形状:", x_unsqueezed.size())


🌟在第一维度上插入一个新维度

import torch# 创建一个1D张量
x = torch.tensor([1, 2, 3])
print("原始张量:", x)
print("原始张量形状:", x.shape)# 在1维度上插入一个新的维度
x_unsqueezed = torch.unsqueeze(x, 1)
print("插入新维度后的张量:", x_unsqueezed)
print("插入新维度后的张量形状:", x_unsqueezed.shape)


🌟一维张量中在第二维度插入一个新维度(第一维度并没有插入)

import torch# 创建一个1D张量
x = torch.tensor([1, 2, 3])
print("原始张量:", x)
print("原始张量形状:", x.shape)# 在1维度上插入一个新的维度
x_unsqueezed = torch.unsqueeze(x, 2)
print("插入新维度后的张量:", x_unsqueezed)
print("插入新维度后的张量形状:", x_unsqueezed.shape)

4. 总结

如果想要学习更多pyTorch的知识,大家可以点个关注并订阅,持续学习、天天进步

你的点赞就是我更新的动力,如果觉得对你有帮助,辛苦友友点个赞,收个藏呀~~~

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com