torch张量的降维与升维

文章目录


一、降维和升维

squeeze和unsqueeze是torch张量常用的降维与升维的一种方式,但这种方式只能增添或减少大小为1的维度,如下:

python 复制代码
x1 = torch.randn(1, 8, 256, 256)
x1 = torch.squeeze(x1,dim=0)
print(x1.shape) # torch.Size([8, 256, 256])

x2 = torch.randn(8, 1, 256, 256)
x2 = torch.squeeze(x2,dim=1)
print(x2.shape) # torch.Size([8, 256, 256])

x1 = torch.randn(8, 256, 256)
x1 = torch.unsqueeze(x1,dim=0)
print(x1.shape)  # torch.Size([1, 8, 256, 256])

x2 = torch.randn(8, 256, 256)
x2 = torch.unsqueeze(x2,dim=1)
print(x2.shape)  # torch.Size([8, 1, 256, 256])

但如果维度大小不为1,squeeze就无效了。
降维:可以使用torch.mean()函数来对维度X进行求平均值,相当于将维度X的所有通道合并为一个单一的通道。
升维:可以使用expand()函数对需要的尺寸进行扩展(其他维度传递-1作为参数,表示在那个维度不进行扩展)

python 复制代码
x1 = torch.randn(2, 8, 256, 256)
x1 = torch.mean(x1, dim=0)
print(x1.shape) # torch.Size([8, 256, 256])

x2 = torch.randn(8, 3, 256, 256)
x2 = torch.mean(x2, dim=1)
print(x2.shape) # torch.Size([8, 256, 256])

x3 = torch.randn(8, 256, 256)
x3 = x3.unsqueeze(0).expand(4,-1,-1,-1)
print(x3.shape)  # torch.Size([4, 8, 256, 256])

x4 = torch.randn(16, 256, 256)
x4 = x4.unsqueeze(1).expand(-1, 8, -1, -1)
print(x4.shape) # torch.Size([16, 8, 256, 256])

未完待续...

相关推荐
热心不起来的市民小周几秒前
说的神马?基于 Wav2Vec2 的端到端中文语音识别系统
人工智能·python·语音识别
lixzest几秒前
C++应用开发转到大模型应用开发路径
开发语言·c++·人工智能·python
CHOTEST中图仪器2 分钟前
基于深度学习的手机中框自动化检测方案:Novator AI影像仪应用案例分析
人工智能·深度学习·影像测量仪·ai自动检测·手机中框检测
我送炭你添花2 分钟前
Pelco KBD300A 模拟器:07+1.宏脚本编辑器与模板库管理实现细节
python·自动化·编辑器·运维开发
de之梦-御风2 分钟前
【深度学习】可直接用于工程决策与项目落地的「传统视觉 vs 深度学习」对比方案
人工智能·深度学习
高洁015 分钟前
10分钟了解向量数据库(4)
人工智能·深度学习·机器学习·数据挖掘·知识图谱
后端小张7 分钟前
【AI 学习】揭开AI卷积神经网络的神秘面纱:从理论到实战
人工智能·深度学习·神经网络·学习·机器学习·计算机视觉·cnn
Wpa.wk7 分钟前
接口自动化测试 - REST-assure小练习(Java版-分层)
java·开发语言·经验分享·python·自动化·接口自动化·po
灵活用工平台9 分钟前
灵活用工实操案例:亲测流程与复盘分享
大数据·人工智能·python·安全
haiyu_y10 分钟前
Day 56 时序数据的检验
人工智能·pytorch·深度学习