mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-03 08:57:54 +00:00
model jit wrapping: got rid of postnet (wip)
This commit is contained in:
1 parent
e492e2e10c
commit
03cd0dc0db
2 files changed
+23
-13
No files matched your search
@@ -494,7 +494,8 @@ class Tacotron2(nn.Module):
|
||||
self.embedding.weight.data.uniform_(-val, val)
|
||||
self.encoder = Encoder(hparams)
|
||||
self.decoder = Decoder(hparams)
|
||||
self.postnet = Postnet(hparams)
|
||||
# NB(bt): Postnet does not seem to have different output per inference experiments
|
||||
#self.postnet = Postnet(hparams)
|
||||
|
||||
def parse_batch(self, batch):
|
||||
text_padded, input_lengths, mel_padded, gate_padded, \
|
||||
@@ -517,7 +518,7 @@ class Tacotron2(nn.Module):
|
||||
mask = mask.permute(1, 0, 2)
|
||||
|
||||
outputs[0].data.masked_fill_(mask, 0.0)
|
||||
outputs[1].data.masked_fill_(mask, 0.0)
|
||||
# NB(bt): No postnet. outputs[1].data.masked_fill_(mask, 0.0)
|
||||
outputs[2].data.masked_fill_(mask[:, 0, :], 1e3) # gate energies
|
||||
|
||||
return outputs
|
||||
@@ -541,24 +542,23 @@ class Tacotron2(nn.Module):
|
||||
output_lengths)
|
||||
|
||||
def inference(self, inputs):
|
||||
print(">>> Inputs: ")
|
||||
print(inputs)
|
||||
print(inputs.dtype)
|
||||
print(self.embedding)
|
||||
torch.set_default_tensor_type('torch.DoubleTensor')
|
||||
#torch.set_default_tensor_type('torch.DoubleTensor')
|
||||
temp = self.embedding(inputs)
|
||||
print('>>> Temp:')
|
||||
print(temp)
|
||||
print(temp.dtype)
|
||||
embedded_inputs = temp.transpose(1, 2)
|
||||
encoder_outputs = self.encoder.inference(embedded_inputs)
|
||||
mel_outputs, gate_outputs, alignments = self.decoder.inference(
|
||||
encoder_outputs)
|
||||
|
||||
mel_outputs_postnet = self.postnet(mel_outputs)
|
||||
mel_outputs_postnet = mel_outputs + mel_outputs_postnet
|
||||
# TODO(bt): The postnet seemed to produce the *same* output, but perhaps not necessary
|
||||
#mel_outputs_postnet = self.postnet(mel_outputs)
|
||||
#mel_outputs_postnet = mel_outputs + mel_outputs_postnet
|
||||
|
||||
outputs = self.parse_output(
|
||||
[mel_outputs, mel_outputs_postnet, gate_outputs, alignments])
|
||||
[
|
||||
mel_outputs,
|
||||
None, #mel_outputs_postnet,
|
||||
gate_outputs,
|
||||
alignments
|
||||
])
|
||||
|
||||
return outputs
|
||||
@@ -35,6 +35,16 @@ def cuda_to_cpu(model):
|
||||
print('Converitng to CPU model...')
|
||||
tacotron_model = cuda_to_cpu(tacotron_model)
|
||||
|
||||
print('Remove unused keys...')
|
||||
new_state_dict = [] # Rebuild the ordered dict
|
||||
for key, value in tacotron_model['state_dict'].items():
|
||||
if key.startswith('postnet'):
|
||||
continue
|
||||
new_state_dict.append((key, value))
|
||||
|
||||
tacotron_model['state_dict'] = OrderedDict(new_state_dict)
|
||||
|
||||
|
||||
print(type(tacotron_model))
|
||||
print(tacotron_model.keys())
|
||||
|
||||
|
||||
Reference in new issue
Block a user