in svoice/models/swave.py [0:0]
def __init__(self, input_size, hidden_size, output_size, num_spk,
dropout=0, num_layers=1, bidirectional=True, input_normalize=False):
super(DPMulCat, self).__init__()
self.input_size = input_size
self.output_size = output_size
self.hidden_size = hidden_size
self.in_norm = input_normalize
self.num_layers = num_layers
self.rows_grnn = nn.ModuleList([])
self.cols_grnn = nn.ModuleList([])
self.rows_normalization = nn.ModuleList([])
self.cols_normalization = nn.ModuleList([])
# create the dual path pipeline
for i in range(num_layers):
self.rows_grnn.append(MulCatBlock(
input_size, hidden_size, dropout, bidirectional=bidirectional))
self.cols_grnn.append(MulCatBlock(
input_size, hidden_size, dropout, bidirectional=bidirectional))
if self.in_norm:
self.rows_normalization.append(
nn.GroupNorm(1, input_size, eps=1e-8))
self.cols_normalization.append(
nn.GroupNorm(1, input_size, eps=1e-8))
else:
# used to disable normalization
self.rows_normalization.append(ByPass())
self.cols_normalization.append(ByPass())
self.output = nn.Sequential(
nn.PReLU(), nn.Conv2d(input_size, output_size * num_spk, 1))