class_docstr: The layer that calculates the loss function used for connectionist
  temporal classification (CTC).
  See https://www.cs.toronto.edu/~graves/preprint.pdf
  
  :param input_layers: The input layers to be connected. 
      The integer in each tuple specifies the number of the output.
      If not set, the first output will be used.
  :type input_layers: list of object, tuple(object, int)
  :param blank: Sets the value for the blank label that will be used as space.
  :type blank: int
  :param skip: Specifies if blank labels may be skipped when aligning.
  :type skip: bool
  :param loss_weight:  The multiplier for the loss function value during training.
  :type loss_weight: float, default=1.0
  :param name: The layer name.
  :type name: str, default=None
  
  .. rubric:: Layer inputs:
  
  (1) the network response.
      The dimensions:
  
      - **BatchLength** is the maximum sequence length
      - **BatchWidth** is the number of sequences in the set
      - **ListSize** is 1
      - **Height** * **Width** * **Depth** * **Channels** is the number of classes
  
  (2) the correct labels as a blob with int data.
  
      The dimensions:
      - **BatchLength** is the maximum labels sequence length
      - **BatchWidth** is the number of sequences, same as first input's **BatchWidth**
      - the other dimensions are 1
  
  (3) (optional): the label sequences lengths as a blob with int data.
      If this input isn't connected, the label sequences are considered to be
      the second input's **BatchLength** long.
      The dimensions:
  
      - **BatchWidth** is the same as for the first input
      - the other dimensions are 1
  
  (4) (optional): the network response sequences lengths as a blob
      with int data. If this input isn't connected, the response sequences
      are considered to be the first input's **BatchLength** long.
      The dimensions:
  
      - **BatchWidth** is the same as for the first input
      - the other dimensions are 1
  
  (5) (optional): the sequences' weights. 
      The dimensions:
  
      - **BatchWidth** is the same as for the first input
      - the other dimensions are 1
  
  .. rubric:: Layer outputs:
  
  The layer has no output.
class_docstr_tok: ["The","layer","that","calculates","the","loss","function","used","for","connectionist","temporal","classification","(","CTC",")",".","See","https",":","\/\/www.cs.toronto.edu\/~graves\/preprint.pdf",":","param","input_layers",":","The","input","layers","to","be","connected",".","The","integer","in","each","tuple","specifies","the","number","of","the","output",".","If","not","set",",","the","first","output","will","be","used",".",":","type","input_layers",":","list","of","object",",","tuple","(","object",",","int",")",":","param","blank",":","Sets","the","value","for","the","blank","label","that","will","be","used","as","space",".",":","type","blank",":","int",":","param","skip",":","Specifies","if","blank","labels","may","be","skipped","when","aligning",".",":","type","skip",":","bool",":","param","loss_weight",":","The","multiplier","for","the","loss","function","value","during","training",".",":","type","loss_weight",":","float",",","default=1.0",":","param","name",":","The","layer","name",".",":","type","name",":","str",",","default=None","..","rubric",":",":","Layer","inputs",":","(","1",")","the","network","response",".","The","dimensions",":","-","*","*","BatchLength","*","*","is","the","maximum","sequence","length","-","*","*","BatchWidth","*","*","is","the","number","of","sequences","in","the","set","-","*","*","ListSize","*","*","is","1","-","*","*","Height","*","*","*","*","*","Width","*","*","*","*","*","Depth","*","*","*","*","*","Channels","*","*","is","the","number","of","classes","(","2",")","the","correct","labels","as","a","blob","with","int","data",".","The","dimensions",":","-","*","*","BatchLength","*","*","is","the","maximum","labels","sequence","length","-","*","*","BatchWidth","*","*","is","the","number","of","sequences",",","same","as","first","input","'s","*","*","BatchWidth","*","*","-","the","other","dimensions","are","1","(","3",")","(","optional",")",":","the","label","sequences","lengths","as","a","blob","with","int","data",".","If","this","input","is","n't","connected",",","the","label","sequences","are","considered","to","be","the","second","input","'s","*","*","BatchLength","*","*","long",".","The","dimensions",":","-","*","*","BatchWidth","*","*","is","the","same","as","for","the","first","input","-","the","other","dimensions","are","1","(","4",")","(","optional",")",":","the","network","response","sequences","lengths","as","a","blob","with","int","data",".","If","this","input","is","n't","connected",",","the","response","sequences","are","considered","to","be","the","first","input","'s","*","*","BatchLength","*","*","long",".","The","dimensions",":","-","*","*","BatchWidth","*","*","is","the","same","as","for","the","first","input","-","the","other","dimensions","are","1","(","5",")","(","optional",")",":","the","sequences","'","weights",".","The","dimensions",":","-","*","*","BatchWidth","*","*","is","the","same","as","for","the","first","input","-","the","other","dimensions","are","1","..","rubric",":",":","Layer","outputs",":","The","layer","has","no","output","."]
docstr: Gets the value of the loss function on the last step.
          
docstr_tok: ["Gets","the","value","of","the","loss","function","on","the","last","step","."]
code: def last_loss(self):
      """Gets the value of the loss function on the last step."""
      return self._internal.get_last_loss()
  
imports: import neoml.PythonWrapper
  from .Dnn import Layer
  from neoml.Utils import check_input_layers
label_desc: Use image node_id 4 for calling the CtcLoss obj's underlying member method code with example usage: obj.last_loss() and returns: self