【发布时间】:2021-03-02 23:17:34
【问题描述】:
我目前正在处理加载为张量的 rgb 图像,我想将它们重塑为二维张量以在它们上实现深度神经网络
我目前正在处理的形状是:
images.shape
torch.Size([32, 3, 244, 244])
我不知道如何处理最后两个字段以及如何展平 3 个颜色通道
【问题讨论】:
标签: python tensorflow pytorch tensor
我目前正在处理加载为张量的 rgb 图像,我想将它们重塑为二维张量以在它们上实现深度神经网络
我目前正在处理的形状是:
images.shape
torch.Size([32, 3, 244, 244])
我不知道如何处理最后两个字段以及如何展平 3 个颜色通道
【问题讨论】:
标签: python tensorflow pytorch tensor
您的要求太模糊,不清楚您想用这些图片实现什么目标。它们带有标签吗?如果没有,您是否要使用自动编码器等无监督方法?查看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]
不推荐在第一层展平高分辨率图像。因此,这就是为什么您在计算机视觉文献中看到人们在模型架构的开头应用了很少的卷积层,以便将它们下采样到更小尺寸(分辨率)的特征描述符。
【讨论】:
你可以做一些简单的事情
image = image.view(image.shape[0], -1)
这会将图像展平为具有两个维度的批量大小和其他三个维度的乘积。
【讨论】: