我想在PyTorch中用可变大小的批次训练我的网络。例如,在图像分类中,我想用第一批大小为128 x 128([64,3,128,128])的图像和第二批大小为256 x 256([64,3,256,256])的图像训练网络。更一般而言,在每个批次中,我都希望将批次中的所有图像随机裁剪(调整大小)为某个最小值和最大值之间的大小。但是,变换功能仅适用于单个示例,不适用于整个批次。
我研究了PyTorch论坛,发现可以通过DataLoader中的collate_fn
参数来实现。但是,如果我是正确的,则collate_fn
返回样本列表,而不是张量。我想知道这是否会导致训练时间变慢,因为GPU无法一次处理整个批次吗?
在PyTorch中无需填充输入的当前最佳方法是什么?