def __init__()

in meshrcnn/modeling/roi_heads/voxel_head.py [0:0]


    def __init__(self, cfg, input_shape):
        super(VoxelRCNNConvUpsampleHead, self).__init__()

        # fmt: off
        num_classes        = cfg.MODEL.ROI_HEADS.NUM_CLASSES
        conv_dims          = cfg.MODEL.ROI_VOXEL_HEAD.CONV_DIM
        self.norm          = cfg.MODEL.ROI_VOXEL_HEAD.NORM
        num_conv           = cfg.MODEL.ROI_VOXEL_HEAD.NUM_CONV
        input_channels     = input_shape.channels
        cls_agnostic_voxel = cfg.MODEL.ROI_VOXEL_HEAD.CLS_AGNOSTIC_VOXEL
        # fmt: on

        self.conv_norm_relus = []
        self.num_depth = cfg.MODEL.ROI_VOXEL_HEAD.NUM_DEPTH
        self.num_classes = 1 if cls_agnostic_voxel else num_classes

        for k in range(num_conv):
            conv = Conv2d(
                input_channels if k == 0 else conv_dims,
                conv_dims,
                kernel_size=3,
                stride=1,
                padding=1,
                bias=not self.norm,
                norm=get_norm(self.norm, conv_dims),
                activation=F.relu,
            )
            self.add_module("voxel_fcn{}".format(k + 1), conv)
            self.conv_norm_relus.append(conv)

        self.deconv = ConvTranspose2d(
            conv_dims if num_conv > 0 else input_channels,
            conv_dims,
            kernel_size=2,
            stride=2,
            padding=0,
        )

        self.predictor = Conv2d(
            conv_dims, self.num_classes * self.num_depth, kernel_size=1, stride=1, padding=0
        )

        for layer in self.conv_norm_relus + [self.deconv]:
            weight_init.c2_msra_fill(layer)
        # use normal distribution initialization for voxel prediction layer
        nn.init.normal_(self.predictor.weight, std=0.001)
        if self.predictor.bias is not None:
            nn.init.constant_(self.predictor.bias, 0)