# FROM LSTR import math import torch.nn as nn def weights_init(m): if isinstance(m, nn.Linear): nn.init.kaiming_uniform_(m.weight.data, a=math.sqrt(5)) elif isinstance(m, nn.Conv1d): nn.init.normal_(m.weight.data) if m.bias is not None: nn.init.normal_(m.bias.data) elif isinstance(m, nn.Conv2d): nn.init.xavier_normal_(m.weight.data) if m.bias is not None: nn.init.normal_(m.bias.data) elif isinstance(m, nn.ConvTranspose1d): nn.init.normal_(m.weight.data) if m.bias is not None: nn.init.normal_(m.bias.data) elif isinstance(m, nn.ConvTranspose2d): nn.init.xavier_normal_(m.weight.data) if m.bias is not None: nn.init.normal_(m.bias.data) elif isinstance(m, nn.BatchNorm1d): nn.init.normal_(m.weight.data, mean=1, std=0.02) nn.init.constant_(m.bias.data, 0) elif isinstance(m, nn.BatchNorm2d): nn.init.normal_(m.weight.data, mean=1, std=0.02) nn.init.constant_(m.bias.data, 0) elif isinstance(m, nn.GRUCell): for param in m.parameters(): if len(param.shape) >= 2: nn.init.orthogonal_(param.data) else: nn.init.normal_(param.data)