in classy_vision/models/resnext3d.py [0:0]
def _init_parameter(self, zero_init_residual_transform):
for m in self.modules():
if isinstance(m, nn.Conv3d):
if (
hasattr(m, "final_transform_op")
and m.final_transform_op
and zero_init_residual_transform
):
nn.init.constant_(m.weight, 0)
else:
nn.init.kaiming_normal_(
m.weight, mode="fan_out", nonlinearity="relu"
)
if m.bias is not None:
nn.init.constant_(m.bias, 0)
elif isinstance(m, nn.BatchNorm3d) and m.affine:
if (
hasattr(m, "final_transform_op")
and m.final_transform_op
and zero_init_residual_transform
):
batchnorm_weight = 0.0
else:
batchnorm_weight = 1.0
nn.init.constant_(m.weight, batchnorm_weight)
nn.init.constant_(m.bias, 0)
elif isinstance(m, nn.Linear):
nn.init.normal_(m.weight, mean=0.0, std=0.01)
nn.init.constant_(m.bias, 0)