def __init__(self, type, data, name=None): Constant.__init__(self, type, data, name) if (isinstance(data, numpy.ndarray) and data.ndim > 0 and len(numpy.unique(data)) == 1): self.tag.unique_value = numpy.unique(data)[0] else: self.tag.unique_value = None
def __init__(self, type, data, name=None): Constant.__init__(self, type, data, name) self.tag.unique_value = None if isinstance(data, numpy.ndarray) and data.ndim > 0: flat_data = data.ravel() if flat_data.shape[0]: if (flat_data == flat_data[0]).all(): self.tag.unique_value = flat_data[0]
def __init__(self, type, data, name=None): Constant.__init__(self, type, data, name) self.tag.unique_value = None if isinstance(data, np.ndarray) and data.ndim > 0: flat_data = data.ravel() if flat_data.shape[0]: if (flat_data == flat_data[0]).all(): self.tag.unique_value = flat_data[0]
def __init__(self, type, data, name=None): assert isinstance(data, slice) # Numpy ndarray aren't hashable, so get rid of them. if isinstance(data.start, numpy.ndarray): assert data.start.ndim == 0 assert "int" in str(data.start.dtype) data = slice(int(data.start), data.stop, data.step) elif isinstance(data.stop, numpy.ndarray): assert data.stop.ndim == 0 assert "int" in str(data.stop.dtype) data = slice(data.start, int(data.stop), data.step) elif isinstance(data.step, numpy.ndarray): assert data.step.ndim == 0 assert "int" in str(data.step.dtype) data = slice(data.start, int(data.stop), data.step) Constant.__init__(self, type, data, name)
def __init__(self, type, data, name=None): assert isinstance(data, slice) # Numpy ndarray aren't hashable, so get rid of them. if isinstance(data.start, np.ndarray): assert data.start.ndim == 0 assert str(data.start.dtype) in theano.tensor.integer_dtypes data = slice(int(data.start), data.stop, data.step) elif isinstance(data.stop, np.ndarray): assert data.stop.ndim == 0 assert str(data.stop.dtype) in theano.tensor.integer_dtypes data = slice(data.start, int(data.stop), data.step) elif isinstance(data.step, np.ndarray): assert data.step.ndim == 0 assert str(data.step.dtype) in theano.tensor.integer_dtypes data = slice(data.start, int(data.stop), data.step) Constant.__init__(self, type, data, name)
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 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 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, 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")