def test_none_Constant(): """ Tests equals We had an error in the past with unpickling """ o1 = Constant(NoneTypeT(), None, name='NoneConst') o2 = Constant(NoneTypeT(), None, name='NoneConst') assert o1.equals(o2) assert NoneConst.equals(o1) assert o1.equals(NoneConst) assert NoneConst.equals(o2) assert o2.equals(NoneConst) # This trigger equals that returned the wrong answer in the past. import six.moves.cPickle as pickle import theano from theano import tensor x = tensor.vector('x') y = tensor.argmax(x) kwargs = {} # We can't pickle DebugMode if theano.config.mode in ["DebugMode", "DEBUG_MODE"]: kwargs = {'mode': 'FAST_RUN'} f = theano.function([x], [y], **kwargs) pickle.loads(pickle.dumps(f))
def test_none_Constant(): """ Tests equals We had an error in the past with unpickling """ o1 = Constant(NoneTypeT(), None, name='NoneConst') o2 = Constant(NoneTypeT(), None, name='NoneConst') assert o1.equals(o2) assert NoneConst.equals(o1) assert o1.equals(NoneConst) assert NoneConst.equals(o2) assert o2.equals(NoneConst) # This trigger equals that returned the wrong answer in the past. import cPickle import theano from theano import tensor x = tensor.vector('x') y = tensor.argmax(x) f = theano.function([x], [y]) cPickle.loads(cPickle.dumps(f))
def make_node(self, x, index): assert isinstance(x.type, TypedListType) if not isinstance(index, Variable): if isinstance(index, slice): index = Constant(SliceType(), index) return Apply(self, [x, index], [x.type()]) else: index = T.constant(index, ndim=0) return Apply(self, [x, index], [x.ttype()]) if isinstance(index.type, SliceType): return Apply(self, [x, index], [x.type()]) elif isinstance(index, T.TensorVariable) and index.ndim == 0: return Apply(self, [x, index], [x.ttype()]) else: raise TypeError('Expected scalar or slice as index.')
def make_node(self, path): if isinstance(path, str): path = Constant(Generic(), path) return gof.Apply( self, [path], [tensor(self.dtype, broadcastable=self.broadcastable)])
self.data.stop, self.data.step) SliceType.Constant = SliceConstant class NoneTypeT(Generic): """ Inherit from Generic to have c code working. """ def filter(self, x, strict=False, allow_downcast=None): if x is None: return x else: raise TypeError('Expected None!') @staticmethod def may_share_memory(a, b): # None never share memory between object, in the sence of DebugMode. # Python None are singleton return False none_type_t = NoneTypeT() # This is a variable instance. It can be used only once per fgraph. # So use NoneConst.clone() before using it in a Theano graph. # Use NoneConst.equals(x) to check if two variable are NoneConst. NoneConst = Constant(none_type_t, None, name='NoneConst')
def __str__(self): return "slice" def __eq__(self, other): return type(self) == type(other) def __hash__(self): return hashtype(self) slicetype = SliceType() class NoneTypeT(Generic): """ Inherit from Generic to have c code working. """ def filter(self, x, strict=False, allow_downcast=None): if x is None: return x else: raise TypeError('Expected None!') none_type_t = NoneTypeT() # This is a variable instance. It can be used only once per fgraph. # So use NoneConst.clone() before using it in a Theano graph. # Use NoneConst.equal(x) to check if two variable are NoneConst. NoneConst = Constant(NoneTypeT(), None, name='NoneConst')
) SliceType.Constant = SliceConstant class NoneTypeT(Generic): """ Inherit from Generic to have c code working. """ def filter(self, x, strict=False, allow_downcast=None): if x is None: return x else: raise TypeError("Expected None!") @staticmethod def may_share_memory(a, b): # None never share memory between object, in the sence of DebugMode. # Python None are singleton return False none_type_t = NoneTypeT() # This is a variable instance. It can be used only once per fgraph. # So use NoneConst.clone() before using it in a Theano graph. # Use NoneConst.equals(x) to check if two variable are NoneConst. NoneConst = Constant(none_type_t, None, name="NoneConst")