深度学习笔记(4)——维度操作(1)压缩维度与扩展维度

本文介绍了深度学习中关于维度操作的基础内容,包括如何使用torch库的unsqueeze和squeeze函数进行维度扩展和压缩,通过实例展示了如何在实际项目中运用这些技巧。读者将掌握扩展新维度和消除多余维度的技巧,为模型构建提供实用工具。
摘要由CSDN通过智能技术生成

深度学习笔记(4)——维度操作(1)压缩维度与扩展维度


前言

维度操作在深度学习的模型搭建的过程中是一类常用的操作,其中对维度的操作有增加维度压缩维度展平、·拼接拆分维度重塑转置’,维度交换等,下面总结下目前可以想到的维度操作。

一、扩展维度

1.1.1 torch.unsqueeze(input,dim)

torch.unsqueeze(input,dim)
input:要操作的tensor
dim:需要加的维度

1.1.2实验

import torch
x = torch.tensor([[7,8,9,10],[5,6,7,8]])
y = torch.unsqueeze(x,2)
print("x.shape:",x.shape)
print("x:",x)
print("y.shape:",y.shape)
print("y:",y)

实验结果:

x.shape: torch.Size([2, 4])
x: tensor([[ 7,  8,  9, 10],
        [ 5,  6,  7,  8]])
y.shape: torch.Size([2, 4, 1])
y: tensor([[[ 7],[ 8],[ 9],[10]],
        [[ 5],[ 6],[ 7],[ 8]]])

1.2.1 None/np.newaxis

新增维度可以通过None实现具体使用方法和np.newaxis一样.
在需要增加维度的地方使用正则表达式加上None或者np.newaxis即可实现维度增加

1.2.2 实验

下面通过两组实验来记录下用法:
实验1:None

x = torch.randn(1,768)
print('x.shape',x.shape)
x = x[:, :, None]
print('x_None', x.shape)

结果:

x.shape torch.Size([1, 768])
x_None torch.Size([1, 768, 1])

实验2:np.newaxis

x = torch.randn(1,768)
print('x.shape',x.shape)
x = x[:, :, np.newaxis]
print('x_newaxis', x.shape)

结果:

x.shape torch.Size([1, 768])
x_newaxis torch.Size([1, 768, 1])

二、压缩维度

2.1 torch.squeeze(input,dim)

压缩维度通过torch.squeeze实现,使用方法和torch.squeeze一样

2.2 实验

代码:

x = torch.randn(1, 4, 1, 4)
print("x.shape:", x.shape)
y1 = torch.squeeze(x, 1)
print("y1.shape:", y1.shape)
y = torch.squeeze(x, 0)
print("y.shape:", y.shape)

输出结果:

x.shape: torch.Size([1, 4, 1, 4])
y1.shape: torch.Size([1, 4, 1, 4])
y.shape: torch.Size([4, 1, 4])

三、结论

以上就是维度增加和压缩的操作,接下来几篇记录剩下的维度操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值