首页 > 解决方案 > 我如何将这些图像重塑为二维图像张量?

问题描述

我目前正在处理加载为张量的 rgb 图像,我想将它们重塑为 2d 张量以在它们上实现深度神经网络

我目前正在处理的形状是:

images.shape

torch.Size([32, 3, 244, 244])

我不知道如何处理最后两个字段以及如何展平 3 个颜色通道

标签: pythontensorflowpytorchtensor

解决方案


你的要求太模糊了,不清楚你想用这些图像实现什么。它们带有标签吗?如果没有,您是否要使用自动编码器等无监督方法?查看images张量的形状:

torch.Size([32, 3, 244, 244])

这意味着该张量中有 32 个彩色 (RGB) 图像。如果您对 2D 的定义意味着将它们转换为灰度图像,那么您可以使用该torchvision库。

images = [torchvision.transforms.ToPILImage()(img) for img in images]
images = [torchvision.transforms.Grayscale()(img) for img in images]

并将 PIL 灰度图像转换回火炬张量,使用:

images = [torchvision.transforms.ToTensor()(img) for img in images]
images = torch.stack(images).to(device)

现在,形状images将是[32, 244, 244]

不推荐在第一层展平高分辨率图像。所以,这就是为什么你在计算机视觉文献中看到人们在模型架构的开头应用了很少的卷积层,以便将它们下采样为更小尺寸(分辨率)的特征描述符。


推荐阅读