class_docstr: A sequential module that passes timestep embeddings to the children that
  support it as an extra input.
  
  Example
  -------
  >>> from speechbrain.nnet.linear import Linear
  >>> class MyBlock(TimestepBlock):
  ...     def __init__(self, input_size, output_size, emb_size):
  ...         super().__init__()
  ...         self.lin = Linear(
  ...             n_neurons=output_size,
  ...             input_size=input_size
  ...         )
  ...         self.emb_proj = Linear(
  ...             n_neurons=output_size,
  ...             input_size=emb_size,
  ...         )
  ...     def forward(self, x, emb):
  ...         return self.lin(x) + self.emb_proj(emb)
  >>> tes = TimestepEmbedSequential(
  ...     MyBlock(128, 64, 16),
  ...     Linear(
  ...         n_neurons=32,
  ...         input_size=64
  ...     )
  ... )
  >>> x = torch.randn(4, 10, 128)
  >>> emb = torch.randn(4, 10, 16)
  >>> out = tes(x, emb)
  >>> out.shape
  torch.Size([4, 10, 32])
class_docstr_tok: ["A","sequential","module","that","passes","timestep","embeddings","to","the","children","that","support","it","as","an","extra","input",".","Example","--","--","--","-",">",">",">","from","speechbrain.nnet.linear","import","Linear",">",">",">","class","MyBlock","(","TimestepBlock",")",":","...","def","__init__","(","self",",","input_size",",","output_size",",","emb_size",")",":","...","super","(",")",".__init__","(",")","...","self.lin","=","Linear","(","...","n_neurons=output_size",",","...","input_size=input_size","...",")","...","self.emb_proj","=","Linear","(","...","n_neurons=output_size",",","...","input_size=emb_size",",","...",")","...","def","forward","(","self",",","x",",","emb",")",":","...","return","self.lin","(","x",")","+","self.emb_proj","(","emb",")",">",">",">","tes","=","TimestepEmbedSequential","(","...","MyBlock","(","128",",","64",",","16",")",",","...","Linear","(","...","n_neurons=32",",","...","input_size=64","...",")","...",")",">",">",">","x","=","torch.randn","(","4",",","10",",","128",")",">",">",">","emb","=","torch.randn","(","4",",","10",",","16",")",">",">",">","out","=","tes","(","x",",","emb",")",">",">",">","out.shape","torch.Size","(","[","4",",","10",",","32","]",")"]
docstr: Computes a sequential pass with sequential embeddings where applicable
  
  Arguments
  ---------
  x: torch.Tensor
      the data tensor
  emb: torch.Tensor
      timestep embeddings
docstr_tok: ["Computes","a","sequential","pass","with","sequential","embeddings","where","applicable","Arguments","--","--","--","--","-","x",":","torch.Tensor","the","data","tensor","emb",":","torch.Tensor","timestep","embeddings"]
code: def forward(self, x, emb=None):
      """Computes a sequential pass with sequential embeddings where applicable
  
      Arguments
      ---------
      x: torch.Tensor
          the data tensor
      emb: torch.Tensor
          timestep embeddings"""
      for layer in self:
          if isinstance(layer, TimestepBlock):
              x = layer(x, emb)
          else:
              x = layer(x)
      return x
  
imports: from abc import abstractmethod
  from speechbrain.utils.data_utils import pad_divisible
  from .autoencoders import NormalizingAutoencoder
  import math
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 1 for calling the TimestepEmbedSequential obj's underlying member method code with example usage: obj.forward(x, emb) and returns: x