Example #1
0
 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
Example #2
0
 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
Example #3
0
 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]
Example #4
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]
Example #5
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)
Example #7
0
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))
Example #8
0
 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))
Example #10
0
 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')
Example #12
0
    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')
Example #13
0
        )


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")