Spaces:
Running
Running
File size: 1,015 Bytes
b3fa29f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# Copyright 2020 Nagoya University (Tomoki Hayashi)
# Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
# Adapted by Florian Lux 2021
import matplotlib.pyplot as plt
import torch
class DurationCalculator(torch.nn.Module):
def __init__(self, reduction_factor):
self.reduction_factor = reduction_factor
super().__init__()
@torch.no_grad()
def forward(self, att_ws, vis=None):
"""
Convert alignment matrix to durations.
"""
if vis is not None:
plt.figure(figsize=(8, 4))
plt.imshow(att_ws.cpu().numpy(), interpolation='nearest', aspect='auto', origin="lower")
plt.xlabel("Inputs")
plt.ylabel("Outputs")
plt.tight_layout()
plt.savefig(vis)
plt.close()
# calculate duration from 2d alignment matrix
durations = torch.stack([att_ws.argmax(-1).eq(i).sum() for i in range(att_ws.shape[1])])
return durations.view(-1) * self.reduction_factor
|