PyTorch基础(15)-- torch.flatten()方法

本文介绍了PyTorch中的torch.flatten()方法,用于数据的扁平化处理。详细解析了该方法的参数start_dim和end_dim,并通过三个案例展示了如何进行全扁平化和部分扁平化的操作,帮助理解和应用该方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近在复现论文中一个块的时候需要使用到torch.flatten()这个方法,这个方法其实很简单,但其中有一些细节可能需要注意,且有个关键点很容易忘记,故在此记录以备查阅。

方法解析

flatten的中文含义为“扁平化”,具体怎么理解呢?我们可以尝试这么理解,假设你的数据为1维数据,那么这个数据天然就已经扁平化了,如果是2维数据,那么扁平化就是将2维数据变为1维数据,如果是3维数据,那么就要根据你自己所选择的“扁平化程度”来进行操作,假设需要全部扁平化,那么就直接将3维数据变为1维数据,如果只需要部分扁平化,那么有一维的数据不会进行扁平操作,具体看下面的案例分析。
在这里插入图片描述
可以看到,torch.flatten()方法有三个参数,分别:

  • input tensor:该方法的输入
  • start_dim:开始flatten的维度
  • end_dim:结束flatten的维度

案例解析

  • 导包
import numpy as np 
import torch
  • 案例1 – 全部扁平化
x = np.arange(27)
x = np.reshape(x, (3,3,3))
x = torch.from_numpy(x)
print('before flatten', x)
x = torch.flatten(x)  # 默认扁平化程度为最高
print('after flatten', x)

在这里插入图片描述

  • 案例2 – 部分扁平化
x = np.arange(27)
x = np.reshape(x, (3, 3, 3))
x = torch.from_numpy(x)
print('before flatten', x)
x = torch.flatten(x, start_dim=0, end_dim=1)
print('after flatten', x)

在这里插入图片描述

  • 案例3 – 部分扁平化
x = np.arange(27)
x = np.reshape(x, (3, 3, 3))
x = torch.from_numpy(x)
print('before flatten', x)
print(x.shape)
x = torch.flatten(x, start_dim=1, end_dim=2)
print('after flatten', x)

在这里插入图片描述

torch.flattenPyTorch中的一个函数,用于将输入张量展平为一维。它接受输入张量和可选的起始维度和结束维度参数。在引用\[1\]中的第一个案例中,torch.flatten被用于将形状为(64, 3, 32, 32)的图像张量展平为形状为(64, 3072)的一维张量。在引用\[2\]中的第二个案例中,如果将torch.flatten替换为torch.reshape,结果将是将形状为(64, 3, 32, 32)的图像张量重新调整为形状为(1, 1, 1, 3072)的张量。在引用\[3\]中的案例中,torch.flatten被用于将形状为(3, 3, 3)的张量部分展平为一维,具体来说是从第0维到第1维。 #### 引用[.reference_title] - *1* *2* [深度学习PyTorch)——flatten函数的用法及其与reshape函数的区别](https://blog.csdn.net/qq_42233059/article/details/126663501)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [PyTorch基础15-- torch.flatten()方法](https://blog.csdn.net/dongjinkun/article/details/121479361)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虾狗PhD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值