【问题标题】:The Batch Size of batch normalisation and gradient descent批量归一化和梯度下降的 Batch Size
【发布时间】:2020-04-18 17:09:45
【问题描述】:

我们需要为GD和归一化选择一个batch size,它们都称为batch size,但在实际实现中,它们是否需要相同? 或者框架如何处理它们?

例如,在 Pytorch 中,数据加载器中定义了一个批量大小,例如

torch.utils.data.DataLoader(image_datasets[x],
batch_size=16,
shuffle=True,
num_workers=4)

如果使用BN

self.bn1 = nn.BatchNorm2d(16)

它必须相同 (16) 还是可以不同?如果不同,这两个“批量大小”之间是否有任何首选关系 谢谢

【问题讨论】:

    标签: python neural-network pytorch


    【解决方案1】:

    不,batch_size 仅在数据加载器中定义,不在模型中。

    BatchNorm2d 有一个num_features 参数,它取决于通道数而不是批量大小,如您在docs 中所见。

    它们完全不相关。

    BatchNorm2d

    torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
    

    参数

    • num_features – C 来自大小为 (N,C,H,W)(N, C, H, W)(N,C,H,W)的预期输入

    • eps – 加到分母上的值,以确保数值稳定性。默认值:1e-5

    • momentum – 用于 running_mean 和 running_var 计算的值。对于累积移动平均(即简单平均),可以设置为无。默认值:0.1

    • affine – 一个布尔值,当设置为 True 时,此模块具有可学习的仿射参数。默认值:真

    • track_running_stats – 一个布尔值,设置为 True 时,此模块跟踪运行均值和方差,设置为 False 时,此模块不跟踪此类统计信息,并且始终在训练和评估模式下使用批处理统计信息.默认值:真

    【讨论】:

      猜你喜欢
      • 2015-07-15
      • 2014-09-01
      • 1970-01-01
      • 2019-08-28
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      相关资源
      最近更新 更多