class_docstr: Convolutional decoder
class_docstr_tok: ["Convolutional","decoder"]
docstr: Split and transpose encoder outputs.
  
  This is cached when doing incremental inference.
docstr_tok: ["Split","and","transpose","encoder","outputs",".","This","is","cached","when","doing","incremental","inference","."]
code: def _split_encoder_out(self, encoder_out, incremental_state):
      """Split and transpose encoder outputs.
  
      This is cached when doing incremental inference.
      """
      cached_result = utils.get_incremental_state(
          self, incremental_state, "encoder_out"
      )
      if cached_result is not None:
          return cached_result
  
      # transpose only once to speed up attention layers
      encoder_a, encoder_b = encoder_out
      encoder_a = encoder_a.transpose(1, 2).contiguous()
      result = (encoder_a, encoder_b)
  
      if incremental_state is not None:
          utils.set_incremental_state(
              self, incremental_state, "encoder_out", result
          )
      return result
  
imports: import math
  import torch
  import torch.nn
  import torch.nn.functional
  from fairseq import utils
  from fairseq.models import FairseqEncoder, FairseqEncoderDecoderModel, FairseqIncrementalDecoder, register_model, register_model_architecture
  from fairseq.modules import AdaptiveSoftmax, BeamableMM, FairseqDropout, GradMultiply, LearnedPositionalEmbedding, LinearizedConvolution
label_desc: Use image node_id 8 for calling the FConvDecoder obj's underlying member method code with example usage: obj._split_encoder_out(encoder_out, incremental_state) and returns: result, cached_result