Pytorch 如何在张量中复制输入通道?

Pytorch 如何在张量中复制输入通道?,pytorch,tensor,Pytorch,Tensor,我有一个带有形状torch.Size([39,1,20,256,256])的张量如何复制通道来制作形状torch.Size([39,3,20,256,256]) 我相当肯定这已经是一个重复的问题,但我自己找不到合适的答案,这就是为什么我要继续并通过引用和来回答这个问题 本质上,torch.Tensor.expand()是您正在寻找的函数,可以按如下方式使用: x=torch.rand([39,1,20,256,256]) y=x.展开(39,3,20,256,256) 请注意,这仅适用于单例维

我有一个带有形状
torch.Size([39,1,20,256,256])的张量
如何复制通道来制作形状
torch.Size([39,3,20,256,256])

我相当肯定这已经是一个重复的问题,但我自己找不到合适的答案,这就是为什么我要继续并通过引用和来回答这个问题

本质上,
torch.Tensor.expand()
是您正在寻找的函数,可以按如下方式使用:

x=torch.rand([39,1,20,256,256])
y=x.展开(39,3,20,256,256)
请注意,这仅适用于单例维度(在您的示例中就是这种情况),但可能不适用于展开之前的任意维度。此外,这基本上只是提供了一个不同的内存视图,这意味着,根据文档,您必须记住以下几点:

一个扩展张量的多个元素可以指单个元素 内存位置。因此,现场操作(尤其是 向量化的)可能会导致不正确的行为。如果你需要 写信给张量,请先克隆它们

有关新分配的内存版本,请参阅中概述的。该语法在其他方面的工作原理与
expand()
完全相同