| 39 | |
| 40 | |
| 41 | class ConvNorm(torch.nn.Module): |
| 42 | def __init__(self, in_channels, out_channels, kernel_size=1, stride=1, |
| 43 | padding=None, dilation=1, bias=True, w_init_gain='linear'): |
| 44 | super(ConvNorm, self).__init__() |
| 45 | if padding is None: |
| 46 | assert (kernel_size % 2 == 1) |
| 47 | padding = int(dilation * (kernel_size - 1) / 2) |
| 48 | |
| 49 | self.conv = torch.nn.Conv1d(in_channels, out_channels, |
| 50 | kernel_size=kernel_size, stride=stride, |
| 51 | padding=padding, dilation=dilation, |
| 52 | bias=bias) |
| 53 | |
| 54 | torch.nn.init.xavier_uniform_( |
| 55 | self.conv.weight, gain=torch.nn.init.calculate_gain(w_init_gain)) |
| 56 | |
| 57 | def forward(self, signal): |
| 58 | conv_signal = self.conv(signal) |
| 59 | return conv_signal |
| 60 | |
| 61 | |
| 62 | def Embedding(num_embeddings, embedding_dim, padding_idx=None): |