time_distributed
allennlp.modules.time_distributed
A wrapper that unrolls the second (time) dimension of a tensor
into the first (batch) dimension, applies some other Module
,
and then rolls the time dimension back up.
TimeDistributed#
class TimeDistributed(torch.nn.Module):
| def __init__(self, module)
Given an input shaped like (batch_size, time_steps, [rest])
and a Module
that takes
inputs like (batch_size, [rest])
, TimeDistributed
reshapes the input to be
(batch_size * time_steps, [rest])
, applies the contained Module
, then reshapes it back.
Note that while the above gives shapes with batch_size
first, this Module
also works if
batch_size
is second - we always just combine the first two dimensions, then split them.
It also reshapes keyword arguments unless they are not tensors or their name is specified in
the optional pass_through
iterable.
forward#
class TimeDistributed(torch.nn.Module):
| ...
| @overrides
| def forward(
| self,
| *inputs,
| pass_through: List[str] = None,
| **kwargs
| )