我有一个形状的张量torch.Size([39, 1, 20, 256, 256])如何复制通道以制作形状torch.Size([39, 3, 20, 256, 256])。
我相当肯定这已经是一个重复的问题,但我自己找不到合适的答案,这就是为什么我继续参考PyTorch 文档和PyTorch 论坛来回答这个问题
本质上,torch.Tensor.expand()是您正在寻找的功能,可以按如下方式使用:
x = torch.rand([39, 1, 20, 256, 256])
y = x.expand(39, 3, 20, 256, 256)
Run Code Online (Sandbox Code Playgroud)
请注意,这仅适用于单例维度,在您的示例中就是这种情况,但在扩展之前可能不适用于任意维度。此外,这基本上只是提供不同的内存视图,这意味着,根据文档,您必须牢记以下几点:
扩展张量的不止一个元素可以引用单个内存位置。因此,就地操作(尤其是矢量化操作)可能会导致不正确的行为。如果您需要写入张量,请先克隆它们。
对于新分配的内存版本,请参阅此(稍微相关的)答案中torch.Tensor.repeat概述的。语法在其他方面与.expand()
| 归档时间: |
|
| 查看次数: |
1419 次 |
| 最近记录: |