是否有 PyTorch 转换可以将 1 通道数据转换为 3 通道数据?

Lev*_*lke 8 pytorch pytorch-lightning pytorch-dataloader

我通过 PyTorch 数据集使用 emnist 数据集以及需要 3 通道输入的神经网络。

我想使用 PyTorch 变换将 1D 灰度复制为 3D,这样我就可以对 1D 和 3D 数据使用相同的网络。

我可以使用哪种变换?或者我将如何按照此处的建议扩展 PyTorch 转换:/sf/answers/3537164641/

Tya*_*lae 6

您可以通过使用参数torchvision.transforms.Grayscale设置为 来实现此目的。num_output_channels 3

用法示例:

trafos = torchvision.transforms.Compose([
    torchvision.transforms.Grayscale(num_output_channels=3),
    torchvision.transforms.ToTensor(),
])

Run Code Online (Sandbox Code Playgroud)

函数式接口(即torchvision.transforms.to_grayscale(num_output_channels=3))也支持相同的参数。


小智 0

您可以简单地使用:

import torch

img = torch.zeros((1, 200, 200))            # img shape = (1, 200, 200)
img2 = torch.cat([img, img, img], dim=0)    # img shape2 = (3, 200, 200)
Run Code Online (Sandbox Code Playgroud)

如果您愿意,您甚至可以根据上面的代码片段编写自己的转换代码。您需要创建一个简单的可调用类,正如 wiki 中所述: https://pytorch.org/tutorials/recipes/recipes/custom_dataset_transforms_loader.html