torch.reshape讲解(小白版)

(1)什么是reshape

reshape 就是“重新排队”。

你可以想象:你有一排小朋友,他们排成一行,现在老师说:

“重新站队,我们现在要每两个人一组,一共几组。”

这就是 reshape —— 换一种排队的方式,人(数据)没变,只是队形变了。

举个超简单的例子:

有6个数字:

[1, 2, 3, 4, 5, 6]

 这是一个一行六列的排法(形状叫(1,6))

我们现在想把它改成二行三列:

import torch

x = torch.tensor([1, 2, 3, 4, 5, 6])
y = torch.reshape(x, (2, 3))
print(y)

输出:

tensor([[1, 2, 3],
        [4, 5, 6]])

(2)reshape的特点

要记住的重点意思
数据不变reshape 不会动数据,只是换形状
总个数不变比如有 6 个数,那 reshape 后也要是 6 个数
支持自动计算-1 表示“这个我不算,让电脑帮我算”

自动计算示例(用-1):

x = torch.tensor([1, 2, 3, 4, 5, 6])
y = torch.reshape(x, (-1, 2))
print(y)

我们只告诉它每组2个数,电脑自动算出组数是3:

tensor([[1, 2],
        [3, 4],
        [5, 6]])

 (3)reshape和图像有关吗

是的!比如一张图片是:

  • 3 个颜色通道(RGB)

  • 每个通道大小是 32x32(像素)

图片的形状就是 (3, 32, 32),但有时候模型要你把它“展平”成一排用 —— reshape 就派上用场啦!

首先,需要了解图像是怎么存在电脑里的:

举个最常见的彩色图片例子:

  • 一张彩色图像其实由 3 个颜色通道组成:红(R)、绿(G)、蓝(B)

  • 每个通道是一张黑白图片(只表示某种颜色强度)

  • 每个通道的大小可能是 32 × 32(比如 CIFAR10)

那么这张图片再PyTorch中的形状就是:

(3, 32, 32)  # 意思是:3 个通道,每个通道 32 高 × 32 宽

 这就叫做图像的“张量形状”(Tensor shape)

其次,为什么要reshape图像:

有时候我们训练的模型,比如线性层(nn.Linear),只接受一维向量,不认得三维的图像形状。

所以我们就需要先把图像从这种:

(3, 32, 32)  →  3 × 32 × 32 = 3072 个数

变成一维的:

(3072,) 或 (1, 3072)

这个时候就用到reshape了

举例说明:

import torch

# 假设这是一个 3x32x32 的图像
img = torch.rand(3, 32, 32)

# reshape 成一维向量
img_flat = img.reshape(-1)  # 变成 (3072,)
print(img_flat.shape)

 最后,一句话总结就是:图像在深度学习中,其实就是一个“多维数组”,reshape 就是用来调整这个数组的形状,方便模型处理。

(4)总结

  • reshape 是“换形状”,就像重新排队一样

  • 不会动里面的数据

  • 总人数不能变(元素个数要一样)

  • 可以用 -1 让电脑自动算一个维度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值