|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from abc import ABC |
|
|
from typing import Any, Dict, Optional |
|
|
|
|
|
from nemo.core.classes import NeuralModule |
|
|
from nemo.core.neural_types import ChannelType, EncodedRepresentation, MaskType, NeuralType |
|
|
|
|
|
__all__ = ['DecoderModule'] |
|
|
|
|
|
|
|
|
class DecoderModule(NeuralModule, ABC): |
|
|
""" Base class for decoder neural module to be used in NLP models. """ |
|
|
|
|
|
@property |
|
|
def input_types(self) -> Optional[Dict[str, NeuralType]]: |
|
|
return { |
|
|
"input_ids": NeuralType(('B', 'T'), ChannelType()), |
|
|
"decoder_mask": NeuralType(('B', 'T'), MaskType(), optional=True), |
|
|
"encoder_embeddings": NeuralType(('B', 'T', 'D'), ChannelType(), optional=True), |
|
|
"encoder_mask": NeuralType(('B', 'T'), MaskType(), optional=True), |
|
|
"decoder_mems": NeuralType(('B', 'D', 'T', 'D'), EncodedRepresentation(), optional=True), |
|
|
} |
|
|
|
|
|
@property |
|
|
def output_types(self) -> Optional[Dict[str, NeuralType]]: |
|
|
return {"last_hidden_states": NeuralType(('B', 'T', 'D'), ChannelType())} |
|
|
|
|
|
@property |
|
|
def hidden_size(self) -> Optional[int]: |
|
|
raise NotImplementedError |
|
|
|
|
|
@property |
|
|
def vocab_size(self) -> Optional[int]: |
|
|
raise NotImplementedError |
|
|
|
|
|
@property |
|
|
def embedding(self) -> Optional[Any]: |
|
|
raise NotImplementedError |
|
|
|
|
|
@property |
|
|
def decoder(self) -> Optional[Any]: |
|
|
raise NotImplementedError |
|
|
|
|
|
@property |
|
|
def max_sequence_length(self) -> Optional[int]: |
|
|
raise NotImplementedError |
|
|
|