suvradeepp's picture
Publish Tiny Hinglish Turn Detector development preview
35d483e verified
Raw
History Blame Contribute Delete
1.13 kB
"""Shared model output types.
Models return logits deliberately. Applying sigmoid in the loss makes mixed
precision training less stable and makes accidental double-sigmoid bugs easy.
"""
from __future__ import annotations
from dataclasses import dataclass
import torch
from torch import Tensor
@dataclass
class TurnDetectionOutput:
"""Raw outputs produced by every turn detector.
Auxiliary filler logits are optional because the endpoint task can be
trained on corpora which do not carry filler annotations.
"""
endpoint_logits: Tensor
midfiller_logits: Tensor | None = None
endfiller_logits: Tensor | None = None
embedding: Tensor | None = None
def probabilities(self) -> dict[str, Tensor]:
"""Return calibrated-at-the-caller sigmoid probabilities."""
result = {"endpoint": torch.sigmoid(self.endpoint_logits)}
if self.midfiller_logits is not None:
result["midfiller"] = torch.sigmoid(self.midfiller_logits)
if self.endfiller_logits is not None:
result["endfiller"] = torch.sigmoid(self.endfiller_logits)
return result