Embed positions in tensor.
(
self,
xs_pad: torch.Tensor,
ilens: torch.Tensor,
)
| 621 | return self._output_size |
| 622 | |
| 623 | def forward( |
| 624 | self, |
| 625 | xs_pad: torch.Tensor, |
| 626 | ilens: torch.Tensor, |
| 627 | ): |
| 628 | """Embed positions in tensor.""" |
| 629 | maxlen = xs_pad.shape[1] |
| 630 | masks = sequence_mask(ilens, maxlen=maxlen, device=ilens.device)[:, None, :] |
| 631 | |
| 632 | xs_pad *= self.output_size() ** 0.5 |
| 633 | |
| 634 | xs_pad = self.embed(xs_pad) |
| 635 | |
| 636 | # forward encoder1 |
| 637 | for layer_idx, encoder_layer in enumerate(self.encoders0): |
| 638 | encoder_outs = encoder_layer(xs_pad, masks) |
| 639 | xs_pad, masks = encoder_outs[0], encoder_outs[1] |
| 640 | |
| 641 | for layer_idx, encoder_layer in enumerate(self.encoders): |
| 642 | encoder_outs = encoder_layer(xs_pad, masks) |
| 643 | xs_pad, masks = encoder_outs[0], encoder_outs[1] |
| 644 | |
| 645 | xs_pad = self.after_norm(xs_pad) |
| 646 | |
| 647 | # forward encoder2 |
| 648 | olens = masks.squeeze(1).sum(1).int() |
| 649 | |
| 650 | for layer_idx, encoder_layer in enumerate(self.tp_encoders): |
| 651 | encoder_outs = encoder_layer(xs_pad, masks) |
| 652 | xs_pad, masks = encoder_outs[0], encoder_outs[1] |
| 653 | |
| 654 | xs_pad = self.tp_norm(xs_pad) |
| 655 | return xs_pad, olens |
| 656 | |
| 657 | |
| 658 | @tables.register("model_classes", "SenseVoiceSmall") |
nothing calls this directly
no test coverage detected