PyTorch | 拼接与拆分

一、拼接

1. cat 函数

t o r c h . c a t ( i n p u t s , d i m = 0 ) : \qquad torch.cat(inputs, dim=0): torch.cat(inputs,dim=0)在给定维度 d i m dim dim(默认为0) 上对输入的张量 i n p u t s inputs inputs 进行拼接操作,在给定 d i m dim dim 维度以外的维度上形状要保持相同。
在这里插入图片描述

2. stack 函数

t o r c h . s t a c k ( s e q u e n c e , d i m = 0 ) : \qquad torch.stack(sequence, dim=0): torch.stack(sequence,dim=0)沿着一个新维度 d i m dim dim 对输入张量进行连接,属于扩张再拼接的函数,也就是在新维度上进行堆叠,序列中所有张量都应该为相同的形状
在这里插入图片描述

3. cat & stack 区别

  • s t a c k stack stack 函数会创建一个新的维度。
  • s t a c k stack stack 函数要求拼接的两个 t e n s o r tensor tensor 形状完全相同。

二、拆分

1. chunk 函数

t o r c h . c h u n k ( t e n s o r , c h u n k s , d i m = 0 ) : \qquad torch.chunk(tensor, chunks, dim=0): torch.chunk(tensor,chunks,dim=0) t e n s o r tensor tensor 在指定维度 d i m dim dim 上进行分块(个数 c h u n k s chunks chunks)。如果沿指定维的张量形状大小不能被 c h u n k s chunks chunks 整分,则最后一个分块会小于其它分块。
在这里插入图片描述

2. split 函数

t o r c h . s p l i t ( t e n s o r , s p l i t _ s i z e , d i m = 0 ) : \qquad torch.split(tensor, split\_size, dim=0): torch.split(tensor,split_size,dim=0)将输入张量分割成相等形状的块结构。如果沿指定维的张量形状大小不能被 s p l i t _ s i z e split\_size split_size 整分,则最后一个分块会小于其它分块。

  • s p l i t _ s i z e split\_size split_size 分割方案:

    • 第一种分割方案是指定单个分块的形状大小。
    • 第二种分割方案是指定 l i s t list list,待分割张量 t e n s o r tensor tensor 将会被分割为 l e n ( l i s t ) len(list) len(list) 份,每一份的大小取决于 l i s t list list 中的元素, l i s t list list 中的数字总和应等于该维度的大小,否则会报错。

    在这里插入图片描述

3. chunk & split 区别

s p l i t \qquad split split 函数是根据块内数据长度来拆分, c h u n k chunk chunk 函数是根据块个数来拆分。

4. unbind 函数

torch.unbind(input, dim=0):移除 i n p u t input input 张量中的指定维度 d i m dim dim
在这里插入图片描述

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: torch.unbind是一个PyTorch库函数,用于解除张量的维度。它可以接受一个张量作为输入,并返回其沿着给定维度拆分的张量序列。如果输入张量具有大小为$n$的给定维度,则返回的序列将由$n$个张量组成,每个张量具有沿着该维度的单个元素。这个函数通常用于处理神经网络中的张量数据。 ### 回答2: torch.unbindPyTorch中的一个函数,其作用是将张量沿着指定的维度拆分为多个张量。具体而言,torch.unbind函数是在给定维度上拆分张量,并返回一个包含拆分的张量的元组。 例如,假设有一个形状为(3, 4)的张量T,我们可以使用torch.unbind(T, dim=0)来沿着第0维拆分张量T。它将返回一个元组,其中包含3个形状为(4,)的张量。 使用torch.unbind的一个常见用途是将一个批量的样本集合拆分为单个样本。例如,如果有一个形状为(10, 3, 64, 64)的张量,代表了一个包含10个样本的批量,我们可以使用torch.unbind(T, dim=0)将其拆分为一个包含10个形状为(3, 64, 64)的张量的元组。 注意,torch.unbind返回的是一个元组,而不是一个张量。如果只有一个拆分出来的张量,我们可以使用变量来存储它,例如new_T = torch.unbind(T, dim=0)[0]。 总结来说,torch.unbind函数是在指定维度上将张量拆分为多个张量的函数,这在处理批量数据时非常有用。 ### 回答3: torch.unbindPyTorch库中的一个函数,用于将张量按照指定的维度分解成若干个张量。它的功能类似于numpy中的split函数。 torch.unbind的语法如下: ```python torch.unbind(input, dim=0) ``` 其中,input表示需要分解的张量,dim表示分解的维度,默认为0。 返回值是一个元组,每个元素是分解后的张量。 例如,对于一个形状为(3, 4)的二维张量input,调用torch.unbind(input, dim=0)会将input分解成三个形状为(4,)的一维张量组成的元组。 此外,torch.unbind还可以用来在某些情况下实现张量的转置和维度交换的效果。 相比于使用其他分解函数,如split或chunk,torch.unbind更加灵活,因为它将张量分解为若干个张量对象,可以直接进行进一步的操作,例如计算、拼接或者传入其他函数中进行处理。 需要注意的是,torch.unbind函数并不改变输入张量的数据,只是将其拆分成多个张量对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

软耳朵DONG

觉得文章不错就鼓励一下作者吧

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

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

打赏作者

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

抵扣说明:

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

余额充值