【问题标题】:What is the function of FrozenBatchNorm2d in “maskrcnn_benchmark”?“maskrcnn_benchmark”中FrozenBatchNorm2d的作用是什么?
【发布时间】:2020-11-27 08:41:48
【问题描述】:

"maskrcnn_benchmark"s github

这里是“FrozenBatchNorm2d”的源代码

import torch
from torch import nn
class FrozenBatchNorm2d(nn.Module):
    def __init__(self, n):
        super(FrozenBatchNorm2d, self).__init__()
        self.register_buffer("weight", torch.ones(n))
        self.register_buffer("bias", torch.zeros(n))
        self.register_buffer("running_mean", torch.zeros(n))
        self.register_buffer("running_var", torch.ones(n))

    def forward(self, x):
        scale = self.weight * self.running_var.rsqrt()
        bias = self.bias - self.running_mean * scale
        scale = scale.reshape(1, -1, 1, 1)
        bias = bias.reshape(1, -1, 1, 1)
        return x * scale + bias

当我把这个函数放在我的脚本中时,我发现这个函数几乎没有效果。 这是我的用法

import torch.nn as nn
import torch
class FrozenBatchNorm2d(nn.Module):
    """
    BatchNorm2d where the batch statistics and the affine parameters
    are fixed
    """

    def __init__(self, n):
        super(FrozenBatchNorm2d, self).__init__()
        self.register_buffer("weight", torch.ones(n))
        self.register_buffer("bias", torch.zeros(n))
        self.register_buffer("running_mean", torch.zeros(n))
        self.register_buffer("running_var", torch.ones(n))


    def forward(self, x):
        scale = self.weight * self.running_var.rsqrt()
        bias = self.bias - self.running_mean * scale
        scale = scale.reshape(1, -1, 1, 1)
        bias = bias.reshape(1, -1, 1, 1)
        print(scale.shape,bias.shape)
        return x * scale + bias

a=FrozenBatchNorm2d((1,2))
a(torch.tensor([1,2,3]))

运行结果和我想的不一样。 那么有人能告诉我这个函数到底是做什么的吗? 如果有人可以帮助我,我将不胜感激。

【问题讨论】:

    标签: networking pytorch conv-neural-network batch-normalization


    【解决方案1】:

    “register_buffer”表示为一些在传输过程中无法优化或更改的参数打开一个RAM,换句话说,“weight”、“bias”、“running_mean”、“running_var”是一致的值。因此,这就是为什么这种重建 batchnorm 方法可以称为 FrozenBatchnorm2d 的原因。这是我的解释,希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 1970-01-01
      • 2019-07-14
      • 2021-04-27
      • 2019-03-01
      • 2016-05-09
      • 2014-10-26
      • 2014-07-15
      • 1970-01-01
      相关资源
      最近更新 更多