【问题标题】:How to make batch with pictures of different sizes for model in PyTorch?如何在 PyTorch 中为模型批量制作不同尺寸的图片?
【发布时间】:2022-07-21 17:46:44
【问题描述】:

我想在我的 PyTorch 模型中使用 GlobalAveragePooling,而不是调整图像大小、裁剪或填充图像。我可以每次迭代(而不是批量)只使用一个图像来训练我的模型。但它太慢了,我不知道如何使用几个不同大小的图像作为模型的一个输入。 型号代码示例:

class GAPModel(nn.Module):
  def __init__(self):
    super().__init__()
    
    self.conv = nn.Sequential(
        nn.Conv2d(3, 16, kernel_size=3),
        nn.ReLU(inplace=True),
    )
    
    self.linear = nn.Sequential(
        nn.Linear(in_features=16, out_features=1),
        nn.ReLU(),
    )

  def forward(self, image):
    return self.linear(self.conv(image).mean([2, 3]))

【问题讨论】:

    标签: python neural-network pytorch conv-neural-network


    【解决方案1】:

    如您所知,在训练模型时,您会为其提供输入数据。
    输入数据的形状如下所示: channel_last:(batch_size, height, width, num_of_channels) 或 channel_first:(batch_size, num_of_channels, height, width)
    如果 batch_size=32 (input_data.shape = (32,height,width,channels) ,这意味着所有 32 个图像应该具有相同的 heightwidth 和 num_of_channels。
    因为您不能将不同形状的 numpy_arraystensor 存储到一个 numpy_arraytensor 中。
    更多说明:
    例如,如果您有两个不同的图像,img_1 和 img_2。
    它们的形状分别是 image1.shape=224,224,3、image2.shape=288,288,3,如果你想用这两个图像制作 batch_of_imgs。如果是这样,batch_of_imgs 的形状是什么?
    会是 batch_of_imgs.shape=(2,224,224,3) 还是 (2,288,288,3)
    如您所见,在制作一批图像时,它们的形状应该相同。
    这意味着您的输入数据(numpy_arraystensors)应该是矩形的,即也就是说,数组的行和列应该相同。

    【讨论】:

      猜你喜欢
      • 2017-03-25
      • 2019-05-20
      • 2019-11-06
      • 2022-01-12
      • 1970-01-01
      • 2018-10-14
      • 2018-01-27
      • 1970-01-01
      • 2023-01-29
      相关资源
      最近更新 更多