pytorch神经网络学习笔记06----被全连接神经网络展平的向量如何恢复到原来的维度

文章介绍了如何使用PyTorch中的reshape和view函数将一维向量恢复为卷积神经网络中的原始特征图结构。reshape函数要求提供的新尺寸与原始结构匹配,而view函数则直接基于原始数据创建新张量,两者都涉及到张量的维度变换。在处理过程中需要注意尺寸的正确性和数据的共享特性。
摘要由CSDN通过智能技术生成

方法一:reshape

如果我们将已经展平的一维向量,恢复成原来的特征图形状为[batch_size, channels, height, width]的张量,可以写成以下代码:

import torch

# 定义已经展平的一维向量x
x = torch.randn(10, 64)

# 将一维向量x恢复为原来的结构[batch_size, channels, height, width]
x = x.reshape(10, 4, 4, 4)  # 假设特征图的大小为:[4, 4]

其中,torch.randn(10, 64)定义了一个 batch_size 为 10,特征图大小为 4x4,通道数为 64 的特征图。x.reshape(10, 4, 4, 4)将一维向量 x 恢复回原来的结构。

需要注意的是,使用 reshape函数 需要保证恢复后的尺寸与之前卷积神经网络的输出结构匹配,不然会导致后续操作中的维度错误。如果在卷积神经网络中使用了池化或升采样等操作,恢复的特征图的大小也需要相应修改。

方法二:x.view

import torch
x = torch.randn(2, 3, 4, 5)
flatten_x = torch.flatten(x)
print(flatten_x.shape)  # torch.Size([120])

# 使用view将其恢复为4D的张量
x_reconstruct = flatten_x.view(2, 3, 4, 5)
print(x_reconstruct.shape)  # torch.Size([2, 3, 4, 5])

可以看到,通过使用view函数,我们可以方便地将一维向量恢复成原来的张量结构。需要注意的是,使用view函数后得到的新张量与原来的张量共享相同的数据存储,这也就意味着修改其中一个张量的值会同时影响到另一个张量的值。因此,在处理过程中需要特别注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值