class_docstr: 3D upscaling layer
  
  Performs 3D upscaling over the three trailing axes of a 5D input tensor.
  
  Parameters
  ----------
  incoming : a :class:`Layer` instance or tuple
      The layer feeding into this layer, or the expected input shape.
  
  scale_factor : integer or iterable
      The scale factor in each dimension. If an integer, it is promoted to
      a cubic scale factor region. If an iterable, it should have three
      elements.
  
  mode : {'repeat', 'dilate'}
      Upscaling mode: repeat element values or upscale leaving zeroes between
      upscaled elements. Default is 'repeat'.
  
  **kwargs
      Any additional keyword arguments are passed to the :class:`Layer`
      superclass.
class_docstr_tok: ["3D","upscaling","layer","Performs","3D","upscaling","over","the","three","trailing","axes","of","a","5D","input","tensor",".","Parameters","--","--","--","--","--","incoming",":","a",":","class",":","`","Layer","`","instance","or","tuple","The","layer","feeding","into","this","layer",",","or","the","expected","input","shape",".","scale_factor",":","integer","or","iterable","The","scale","factor","in","each","dimension",".","If","an","integer",",","it","is","promoted","to","a","cubic","scale","factor","region",".","If","an","iterable",",","it","should","have","three","elements",".","mode",":","{","'repeat","'",",","'dilate","'","}","Upscaling","mode",":","repeat","element","values","or","upscale","leaving","zeroes","between","upscaled","elements",".","Default","is","'repeat","'",".","*","*","kwargs","Any","additional","keyword","arguments","are","passed","to","the",":","class",":","`","Layer","`","superclass","."]
code: def get_output_for(self, input, **kwargs):
      a, b, c = self.scale_factor
      upscaled = input
      if self.mode == "repeat":
          if c > 1:
              upscaled = T.extra_ops.repeat(upscaled, c, 4)
          if b > 1:
              upscaled = T.extra_ops.repeat(upscaled, b, 3)
          if a > 1:
              upscaled = T.extra_ops.repeat(upscaled, a, 2)
      elif self.mode == "dilate":
          if c > 1 or b > 1 or a > 1:
              output_shape = self.get_output_shape_for(input.shape)
              upscaled = T.zeros(shape=output_shape, dtype=input.dtype)
              upscaled = T.set_subtensor(
                  upscaled[:, :, ::a, ::b, ::c], input
              )
      return upscaled
  
imports: import theano.tensor
  from .base import Layer
  from ..utils import as_tuple
label_desc: Use image node_id 3 for calling the Upscale3DLayer obj's underlying member method code with example usage: obj.get_output_for(input) and returns: upscaled