FlagField(self, flag_value:Any) -> None
A class representing a flag, which must be constant across all instances in a batch.
This will be passed to a
forward method as a single value of whatever type you pass in.
FlagField.as_tensor(self, padding_lengths:Dict[str, int]) -> Any
Given a set of specified padding lengths, actually pad the data in this field and return a torch Tensor (or a more complex data structure) of the correct shape. We also take a couple of parameters that are important when constructing torch Tensors.
- padding_lengths :
Dict[str, int]This dictionary will have the same keys that were produced in
get_padding_lengths. The values specify the lengths to use when padding each relevant dimension, aggregated across all instances in a batch.
FlagField.batch_tensors(self, tensor_list:List[Any]) -> Any
Takes the output of
Field.as_tensor() from a list of
Instances and merges it into
one batched tensor for this
Field. The default implementation here in the base class
handles cases where
as_tensor returns a single torch tensor per instance. If your
subclass returns something other than this, you need to override this method.
This operation does not modify
self, but in some cases we need the information
self in order to perform the batching, so this is an instance method, not
a class method.
ListField can pad the number of fields in a list (e.g., the number of answer
TextFields), we need a representation of an empty field of each type. This
returns that. This will only ever be called when we're to the point of calling
as_tensor, so you don't need to worry about
count_vocab_items, etc., being called on this empty field.
We make this an instance method instead of a static method so that if there is any state
in the Field, we can copy it over (e.g., the token indexers in
FlagField.get_padding_lengths(self) -> Dict[str, int]
If there are things in this field that need padding, note them here. In order to pad a
batch of instance, we get all of the lengths from the batch, take the max, and pad
everything to that length (or use a pre-specified maximum length). The return value is a
dictionary mapping keys to lengths, like
This is always called after :func: