data
Seq2SeqLMOutput
extends
ModelOutputSeq2SeqLMOutput(logits: Tensor, loss: Tensor | None = None, past_key_values: EncoderDecoderCache | tuple[tuple[Tensor, Tensor], ...] | None = None, decoder_hidden_states: tuple[Tensor, ...] | None = None, decoder_attentions: tuple[Tensor, ...] | None = None, encoder_last_hidden_state: Tensor | None = None, encoder_hidden_states: tuple[Tensor, ...] | None = None, encoder_attentions: tuple[Tensor, ...] | None = None)Output of any encoder-decoder seq2seq language model.
Attributes
logitsTensorDecoder vocabulary logits, shape
(B, T_dec, vocab_size).loss(Tensor or None, optional)Scalar cross-entropy loss when
labels were supplied (label
smoothing / shift handled internally).Per-layer decoder
(key, value) cache for autoregressive
decoding.decoder_hidden_states(tuple[Tensor, ...] or None, optional)Per-layer decoder hidden states.
decoder_attentions(tuple[Tensor, ...] or None, optional)Per-layer decoder self-attention weights.
encoder_last_hidden_state(Tensor or None, optional)Final encoder output, cached so callers can run multiple decoder
passes (e.g. beam search) without re-encoding.
encoder_hidden_states(tuple[Tensor, ...] or None, optional)Per-layer encoder hidden states.
encoder_attentions(tuple[Tensor, ...] or None, optional)Per-layer encoder self-attention weights.
Notes
Produced by TransformerForSeq2SeqLM today; T5, BART, and mBART
are the natural future consumers. Caching the encoder output is the
standard pattern for batched generation.
Examples
>>> import lucid
>>> from lucid.models import Seq2SeqLMOutput
>>> out = Seq2SeqLMOutput(
... logits=lucid.zeros(1, 32, 32128),
... encoder_last_hidden_state=lucid.zeros(1, 128, 768),
... )
>>> out.logits.shape, out.encoder_last_hidden_state.shape
((1, 32, 32128), (1, 128, 768))
The decoder and encoder keep separate hidden-state and attention
fields, which is what distinguishes this from CausalLMOutput.
>>> out.decoder_hidden_states is None, out.encoder_hidden_states is None
(True, True)Used by 2
Constructors
1dunder
__init__
→None__init__(logits: Tensor, loss: Tensor | None = None, past_key_values: EncoderDecoderCache | tuple[tuple[Tensor, Tensor], ...] | None = None, decoder_hidden_states: tuple[Tensor, ...] | None = None, decoder_attentions: tuple[Tensor, ...] | None = None, encoder_last_hidden_state: Tensor | None = None, encoder_hidden_states: tuple[Tensor, ...] | None = None, encoder_attentions: tuple[Tensor, ...] | None = None)