class_docstr: This is an identity-like op with the side effect of enforcing a
  conditional breakpoint, inside a theano function, based on a symbolic
  scalar condition. It automatically detects available debuggers and uses
  the first available in the following order: `pudb`, `ipdb`, or `pdb`.
  
  :type name: String
  :param name: name of the conditional breakpoint. To be printed when the
               breakpoint is activated.
  
  :note: WARNING. At least one of the outputs of the op must be used
                  otherwise the op will be removed from the Theano graph
                  due to its outputs being unused
  
  :note: WARNING. Employing the function inside a theano graph can prevent
                  Theano from applying certain optimizations to improve
                  performance, reduce memory consumption and/or reduce
                  numerical instability.
  
          Detailed explanation:
          As of 2014-12-01 the PdbBreakpoint op is not known by any
          optimization. Setting a PdbBreakpoint op in the middle of a
          pattern that is usually optimized out will block the optimization.
  
  Example:
  
  .. code-block:: python
  
      import theano
      import theano.tensor as T
      from theano.tests.breakpoint import PdbBreakpoint
  
      input = T.fvector()
      target = T.fvector()
  
      # Mean squared error between input and target
      mse = (input - target) ** 2
  
      # Conditional breakpoint to be activated if the total MSE is higher
      # than 100. The breakpoint will monitor the inputs, targets as well
      # as the individual error values
      breakpointOp = PdbBreakpoint("MSE too high")
      condition = T.gt(mse.sum(), 100)
      mse, monitored_input, monitored_target = breakpointOp(condition, mse,
                                                            input, target)
  
      # Compile the theano function
      fct = theano.function([input, target], mse)
  
      # Use the function
      print fct([10, 0], [10, 5]) # Will NOT activate the breakpoint
      print fct([0, 0], [10, 5]) # Will activate the breakpoint
class_docstr_tok: ["This","is","an","identity-like","op","with","the","side","effect","of","enforcing","a","conditional","breakpoint",",","inside","a","theano","function",",","based","on","a","symbolic","scalar","condition",".","It","automatically","detects","available","debuggers","and","uses","the","first","available","in","the","following","order",":","`","pudb","`",",","`","ipdb","`",",","or","`","pdb","`",".",":","type","name",":","String",":","param","name",":","name","of","the","conditional","breakpoint",".","To","be","printed","when","the","breakpoint","is","activated",".",":","note",":","WARNING",".","At","least","one","of","the","outputs","of","the","op","must","be","used","otherwise","the","op","will","be","removed","from","the","Theano","graph","due","to","its","outputs","being","unused",":","note",":","WARNING",".","Employing","the","function","inside","a","theano","graph","can","prevent","Theano","from","applying","certain","optimizations","to","improve","performance",",","reduce","memory","consumption","and\/or","reduce","numerical","instability",".","Detailed","explanation",":","As","of","2014-12-01","the","PdbBreakpoint","op","is","not","known","by","any","optimization",".","Setting","a","PdbBreakpoint","op","in","the","middle","of","a","pattern","that","is","usually","optimized","out","will","block","the","optimization",".","Example",":","..","code-block",":",":","python","import","theano","import","theano.tensor","as","T","from","theano.tests.breakpoint","import","PdbBreakpoint","input","=","T.fvector","(",")","target","=","T.fvector","(",")","#","Mean","squared","error","between","input","and","target","mse","=","(","input","-","target",")","*","*","2","#","Conditional","breakpoint","to","be","activated","if","the","total","MSE","is","higher","#","than","100",".","The","breakpoint","will","monitor","the","inputs",",","targets","as","well","#","as","the","individual","error","values","breakpointOp","=","PdbBreakpoint","(","``","MSE","too","high","''",")","condition","=","T.gt","(","mse.sum","(",")",",","100",")","mse",",","monitored_input",",","monitored_target","=","breakpointOp","(","condition",",","mse",",","input",",","target",")","#","Compile","the","theano","function","fct","=","theano.function","(","[","input",",","target","]",",","mse",")","#","Use","the","function","print","fct","(","[","10",",","0","]",",","[","10",",","5","]",")","#","Will","NOT","activate","the","breakpoint","print","fct","(","[","0",",","0","]",",","[","10",",","5","]",")","#","Will","activate","the","breakpoint"]
code: def __init__(self, name):
      self.name = name
  
file_path: Theano/theano/tests/breakpoint.py
imports: from __future__ import absolute_import, print_function, division
  import numpy
  import imp
  import theano
  from theano.gof import Op, Apply
  from theano.gradient import DisconnectedType
label_desc: Use image node_id 1 to create a new PdbBreakpoint object from inherited base classes: Op with example: obj = PdbBreakpoint(name)