class_docstr: CTC loss function wrapper.
  
  Notes
  -----
  Using the wrapper requires that Baidu's warp-ctc library is installed.
  If the warp-ctc library is not on your compiler's default library path,
  you must set the configuration variable ``config.ctc.root`` appropriately.
  
  Parameters
  ----------
  compute_grad
      If set to True, enables the computation of gradients of the CTC loss function.
class_docstr_tok: ["CTC","loss","function","wrapper",".","Notes","--","--","-","Using","the","wrapper","requires","that","Baidu","'s","warp-ctc","library","is","installed",".","If","the","warp-ctc","library","is","not","on","your","compiler","'s","default","library","path",",","you","must","set","the","configuration","variable","``","config.ctc.root","``","appropriately",".","Parameters","--","--","--","--","--","compute_grad","If","set","to","True",",","enables","the","computation","of","gradients","of","the","CTC","loss","function","."]
code: def make_node(self, activations, labels, input_lengths):
      t_activations = T.as_tensor_variable(activations)
      # Ensure activations array is C-contiguous
      t_activations = cpu_contiguous(t_activations)
  
      t_labels = T.as_tensor_variable(labels)
      t_input_lengths = T.as_tensor_variable(input_lengths)
  
      if t_activations.type.dtype != "float32":
          raise TypeError("activations must use the float32 type!")
  
      if t_activations.ndim != 3:
          raise ValueError("activations must have 3 dimensions.")
  
      if t_labels.type.dtype != "int32":
          raise TypeError("labels must use the int32 type!")
  
      if t_labels.ndim != 2:
          raise ValueError("labels must have 2 dimensions.")
  
      if t_input_lengths.type.dtype != "int32":
          raise TypeError("input_lengths must use the int32 type!")
  
      if t_input_lengths.ndim != 1:
          raise ValueError("input_lengths must have 1 dimension.")
  
      costs = T.fvector(name="ctc_cost")
      outputs = [costs]
      if self.compute_grad:
          gradients = T.ftensor3(name="ctc_grad")
          outputs += [gradients]
  
      return gof.Apply(
          self,
          inputs=[t_activations, t_labels, t_input_lengths],
          outputs=outputs,
      )
  
imports: from __future__ import division, absolute_import, print_function
  import os
  import sys
  import theano.tensor
  from theano import config
  from theano import gof
  from theano.gof import local_optimizer
  from theano.gof.cmodule import GCC_compiler
  from theano.tensor.opt import register_canonicalize
  from theano.tensor.extra_ops import cpu_contiguous
  from theano.gradient import grad_undefined
label_desc: Use image node_id 7 for calling the ConnectionistTemporalClassification obj's underlying member method code with example usage: obj.make_node(activations, labels, input_lengths) and returns: gof