MCPcopy Create free account
hub / github.com/Project-MONAI/MONAI / _initialize_weights

Method _initialize_weights

monai/networks/nets/efficientnet.py:451–475  ·  view source on GitHub ↗

Args: None, initializes weights for conv/linear/batchnorm layers following weight init methods from `official Tensorflow EfficientNet implementation <https://github.com/tensorflow/tpu/blob/master/models/official/efficientnet/efficientnet_model

(self)

Source from the content-addressed store, hash-verified

449 return x
450
451 def _initialize_weights(self) -> None:
452 """
453 Args:
454 None, initializes weights for conv/linear/batchnorm layers
455 following weight init methods from
456 `official Tensorflow EfficientNet implementation
457 <https://github.com/tensorflow/tpu/blob/master/models/official/efficientnet/efficientnet_model.py#L61>`_.
458 Adapted from `EfficientNet-PyTorch&#x27;s init method
459 <https://github.com/rwightman/gen-efficientnet-pytorch/blob/master/geffnet/efficientnet_builder.py>`_.
460 """
461 for _, m in self.named_modules():
462 if isinstance(m, (nn.Conv1d, nn.Conv2d, nn.Conv3d)):
463 fan_out = reduce(operator.mul, m.kernel_size, 1) * m.out_channels
464 m.weight.data.normal_(0, math.sqrt(2.0 / fan_out))
465 if m.bias is not None:
466 m.bias.data.zero_()
467 elif isinstance(m, (nn.BatchNorm1d, nn.BatchNorm2d, nn.BatchNorm3d)):
468 m.weight.data.fill_(1.0)
469 m.bias.data.zero_()
470 elif isinstance(m, nn.Linear):
471 fan_out = m.weight.size(0)
472 fan_in = 0
473 init_range = 1.0 / math.sqrt(fan_in + fan_out)
474 m.weight.data.uniform_(-init_range, init_range)
475 m.bias.data.zero_()
476
477
478class EfficientNetBN(EfficientNet):

Callers 1

__init__Method · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected