Python theano.sparse() Examples
The following are 30
code examples of theano.sparse().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
theano
, or try the search function
.
Example #1
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_sparse_shared_memory(): # Note : There are no inplace ops on sparse matrix yet. If one is # someday implemented, we could test it here. a = random_lil((3, 4), 'float32', 3).tocsr() m1 = random_lil((4, 4), 'float32', 3).tocsr() m2 = random_lil((4, 4), 'float32', 3).tocsr() x = SparseType('csr', dtype='float32')() y = SparseType('csr', dtype='float32')() sdot = theano.sparse.structured_dot z = sdot(x * 3, m1) + sdot(y * 2, m2) f = theano.function([theano.In(x, mutable=True), theano.In(y, mutable=True)], z, mode='FAST_RUN') def f_(x, y, m1=m1, m2=m2): return ((x * 3) * m1) + ((y * 2) * m2) assert SparseType.may_share_memory(a, a) # This is trivial result = f(a, a) result_ = f_(a, a) assert (result_.todense() == result.todense()).all()
Example #2
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_GetItem2Lists(self): a, A = sparse_random_inputs('csr', (4, 5)) b, B = sparse_random_inputs('csc', (4, 5)) y = a[0][[0, 0, 1, 3], [0, 1, 2, 4]] z = b[0][[0, 0, 1, 3], [0, 1, 2, 4]] fa = theano.function([a[0]], y) fb = theano.function([b[0]], z) t_geta = fa(A[0]) t_getb = fb(B[0]) s_geta = numpy.asarray(scipy.sparse.csr_matrix(A[0])[[0, 0, 1, 3], [0, 1, 2, 4]]) s_getb = numpy.asarray(scipy.sparse.csc_matrix(B[0])[[0, 0, 1, 3], [0, 1, 2, 4]]) utt.assert_allclose(t_geta, s_geta) utt.assert_allclose(t_getb, s_getb)
Example #3
Source File: test_opt.py From D-VAE with MIT License | 6 votes |
def test_local_csm_grad_c(): raise SkipTest("Opt disabled as it don't support unsorted indices") if not theano.config.cxx: raise SkipTest("G++ not available, so we need to skip this test.") data = tensor.vector() indices, indptr, shape = (tensor.ivector(), tensor.ivector(), tensor.ivector()) mode = theano.compile.mode.get_default_mode() if theano.config.mode == 'FAST_COMPILE': mode = theano.compile.Mode(linker='c|py', optimizer='fast_compile') mode = mode.including("specialize", "local_csm_grad_c") for CS, cast in [(sparse.CSC, sp.csc_matrix), (sparse.CSR, sp.csr_matrix)]: cost = tensor.sum(sparse.DenseFromSparse()(CS(data, indices, indptr, shape))) f = theano.function( [data, indices, indptr, shape], tensor.grad(cost, data), mode=mode) assert not any(isinstance(node.op, sparse.CSMGrad) for node in f.maker.fgraph.toposort()) v = cast(random_lil((10, 40), config.floatX, 3)) f(v.data, v.indices, v.indptr, v.shape)
Example #4
Source File: opt.py From D-VAE with MIT License | 6 votes |
def local_structured_dot(node): if node.op == sparse._structured_dot: a, b = node.inputs if a.type.format == 'csc': a_val, a_ind, a_ptr, a_shape = csm_properties(a) a_nsparse = a_shape[0] return [sd_csc(a_val, a_ind, a_ptr, a_nsparse, b)] if a.type.format == 'csr': a_val, a_ind, a_ptr, a_shape = csm_properties(a) return [sd_csr(a_val, a_ind, a_ptr, b)] return False # Commented out because # a) it is only slightly faster than scipy these days, and sometimes a little # slower, and # b) the resulting graphs make it very difficult for an op to do size checking # on the matrices involved. dimension mismatches are hard to detect sensibly. # register_specialize(local_structured_dot)
Example #5
Source File: opt.py From D-VAE with MIT License | 6 votes |
def make_node(self, x, y): x, y = sparse.as_sparse_variable(x), tensor.as_tensor_variable(y) out_dtype = scalar.upcast(x.type.dtype, y.type.dtype) if self.inplace: assert out_dtype == y.dtype indices, indptr, data = csm_indices(x), csm_indptr(x), csm_data(x) # We either use CSC or CSR depending on the format of input assert self.format == x.type.format # The magic number two here arises because L{scipy.sparse} # objects must be matrices (have dimension 2) assert y.type.ndim == 2 out = tensor.TensorType(dtype=out_dtype, broadcastable=y.type.broadcastable)() return gof.Apply(self, [data, indices, indptr, y], [out])
Example #6
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_op(self): for format in sparse.sparse_formats: for out_f in sparse.sparse_formats: for dtype in sparse.all_dtypes: blocks = self.mat[format] f = theano.function( self.x[format], self.op_class( format=out_f, dtype=dtype)(*self.x[format]), allow_input_downcast=True) tested = f(*blocks) expected = self.expected_f(blocks, format=out_f, dtype=dtype) utt.assert_allclose(expected.toarray(), tested.toarray()) assert tested.format == expected.format assert tested.dtype == expected.dtype
Example #7
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_grad(self): for format in sparse.sparse_formats: for i_dtype in sparse.float_dtypes: for o_dtype in tensor.float_dtypes: if o_dtype == 'float16': # Don't test float16 output. continue _, data = sparse_random_inputs( format, shape=(4, 7), out_dtype=i_dtype) eps = None if o_dtype == 'float32': eps = 1e-2 verify_grad_sparse(Cast(o_dtype), data, eps=eps)
Example #8
Source File: test_opt.py From D-VAE with MIT License | 6 votes |
def test_local_csm_properties_csm(): data = tensor.vector() indices, indptr, shape = (tensor.ivector(), tensor.ivector(), tensor.ivector()) mode = theano.compile.mode.get_default_mode() mode = mode.including("specialize", "local_csm_properties_csm") for CS, cast in [(sparse.CSC, sp.csc_matrix), (sparse.CSR, sp.csr_matrix)]: f = theano.function([data, indices, indptr, shape], sparse.csm_properties( CS(data, indices, indptr, shape)), mode=mode) assert not any( isinstance(node.op, (sparse.CSM, sparse.CSMProperties)) for node in f.maker.fgraph.toposort()) v = cast(random_lil((10, 40), config.floatX, 3)) f(v.data, v.indices, v.indptr, v.shape)
Example #9
Source File: test_opt.py From D-VAE with MIT License | 6 votes |
def test_local_mul_s_d(): if not theano.config.cxx: raise SkipTest("G++ not available, so we need to skip this test.") mode = theano.compile.mode.get_default_mode() mode = mode.including("specialize", "local_mul_s_d") for sp_format in sparse.sparse_formats: inputs = [getattr(theano.sparse, sp_format + '_matrix')(), tensor.matrix()] f = theano.function(inputs, sparse.mul_s_d(*inputs), mode=mode) assert not any(isinstance(node.op, sparse.MulSD) for node in f.maker.fgraph.toposort())
Example #10
Source File: test_opt.py From D-VAE with MIT License | 6 votes |
def test_local_mul_s_v(): if not theano.config.cxx: raise SkipTest("G++ not available, so we need to skip this test.") mode = theano.compile.mode.get_default_mode() mode = mode.including("specialize", "local_mul_s_v") for sp_format in ['csr']: # Not implemented for other format inputs = [getattr(theano.sparse, sp_format + '_matrix')(), tensor.vector()] f = theano.function(inputs, sparse.mul_s_v(*inputs), mode=mode) assert not any(isinstance(node.op, sparse.MulSV) for node in f.maker.fgraph.toposort())
Example #11
Source File: test_opt.py From D-VAE with MIT License | 6 votes |
def test_local_sampling_dot_csr(): if not theano.config.cxx: raise SkipTest("G++ not available, so we need to skip this test.") mode = theano.compile.mode.get_default_mode() mode = mode.including("specialize", "local_sampling_dot_csr") for sp_format in ['csr']: # Not implemented for other format inputs = [tensor.matrix(), tensor.matrix(), getattr(theano.sparse, sp_format + '_matrix')()] f = theano.function(inputs, sparse.sampling_dot(*inputs), mode=mode) if theano.config.blas.ldflags: assert not any(isinstance(node.op, sparse.SamplingDot) for node in f.maker.fgraph.toposort()) else: # SamplingDotCSR's C implementation needs blas, so it should not # be inserted assert not any(isinstance(node.op, sparse.opt.SamplingDotCSR) for node in f.maker.fgraph.toposort())
Example #12
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_infer_shape(self): mat = (numpy.arange(12) + 1).reshape((4, 3)) mat[0, 1] = mat[1, 0] = mat[2, 2] = 0 x_csc = theano.sparse.csc_matrix(dtype=theano.config.floatX) mat_csc = sp.csc_matrix(mat, dtype=theano.config.floatX) self._compile_and_check([x_csc], [Remove0()(x_csc)], [mat_csc], self.op_class) x_csr = theano.sparse.csr_matrix(dtype=theano.config.floatX) mat_csr = sp.csr_matrix(mat, dtype=theano.config.floatX) self._compile_and_check([x_csr], [Remove0()(x_csr)], [mat_csr], self.op_class)
Example #13
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_op(self): for format in sparse.sparse_formats: for shape in zip(range(5, 9), range(3, 7)[::-1]): variable, data = sparse_random_inputs(format, shape=shape) data[0][0, 0] = data[0][1, 1] = 0 f = theano.function(variable, self.op(*variable)) tested = f(*data) expected = data[0] expected.eliminate_zeros() assert all(tested.data == expected.data) assert not all(tested.data == 0) tested = tested.toarray() expected = expected.toarray() utt.assert_allclose(expected, tested)
Example #14
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_equality_case(self): """ Test assuring normal behaviour when values in the matrices are equal """ scipy_ver = [int(n) for n in scipy.__version__.split('.')[:2]] if (bool(scipy_ver < [0, 13])): raise SkipTest("comparison operators need newer release of scipy") x = sparse.csc_matrix() y = theano.tensor.matrix() m1 = sp.csc_matrix((2, 2), dtype=theano.config.floatX) m2 = numpy.asarray([[0, 0], [0, 0]], dtype=theano.config.floatX) for func in self.testsDic: op = func(y, x) f = theano.function([y, x], op) self.assertTrue(numpy.array_equal(f(m2, m1), self.testsDic[func](m2, m1)))
Example #15
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_op(self): for format in sparse.sparse_formats: for axis in self.possible_axis: variable, data = sparse_random_inputs(format, shape=(10, 10)) z = theano.sparse.sp_sum(variable[0], axis=axis) if axis is None: assert z.type.broadcastable == () else: assert z.type.broadcastable == (False, ) f = theano.function(variable, self.op(variable[0], axis=axis)) tested = f(*data) expected = data[0].todense().sum(axis).ravel() utt.assert_allclose(expected, tested)
Example #16
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_csm_unsorted(self): """ Test support for gradients of unsorted inputs. """ sp_types = {'csc': sp.csc_matrix, 'csr': sp.csr_matrix} for format in ['csr', 'csc', ]: for dtype in ['float32', 'float64']: x = tensor.tensor(dtype=dtype, broadcastable=(False,)) y = tensor.ivector() z = tensor.ivector() s = tensor.ivector() # Sparse advanced indexing produces unsorted sparse matrices a = sparse_random_inputs(format, (4, 3), out_dtype=dtype, unsorted_indices=True)[1][0] # Make sure it's unsorted assert not a.has_sorted_indices def my_op(x): y = tensor.constant(a.indices) z = tensor.constant(a.indptr) s = tensor.constant(a.shape) return tensor.sum( dense_from_sparse(CSM(format)(x, y, z, s) * a)) verify_grad_sparse(my_op, [a.data])
Example #17
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_dot_sparse_sparse(self): # test dot for 2 input sparse matrix sparse_dtype = 'float64' sp_mat = {'csc': sp.csc_matrix, 'csr': sp.csr_matrix, 'bsr': sp.csr_matrix} for sparse_format_a in ['csc', 'csr', 'bsr']: for sparse_format_b in ['csc', 'csr', 'bsr']: a = SparseType(sparse_format_a, dtype=sparse_dtype)() b = SparseType(sparse_format_b, dtype=sparse_dtype)() d = theano.dot(a, b) f = theano.function([a, b], theano.Out(d, borrow=True)) topo = f.maker.fgraph.toposort() for M, N, K, nnz in [(4, 3, 2, 3), (40, 30, 20, 3), (40, 30, 20, 30), (400, 3000, 200, 6000), ]: a_val = sp_mat[sparse_format_a]( random_lil((M, N), sparse_dtype, nnz)) b_val = sp_mat[sparse_format_b]( random_lil((N, K), sparse_dtype, nnz)) f(a_val, b_val)
Example #18
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_csr_dense(self): x = theano.sparse.csr_matrix('x') y = theano.tensor.matrix('y') v = theano.tensor.vector('v') for (x, y, x_v, y_v) in [(x, y, self.x_csr, self.y), (x, v, self.x_csr, self.v_100), (v, x, self.v_10, self.x_csr)]: f_a = theano.function([x, y], theano.sparse.dot(x, y)) f_b = lambda x, y: x * y utt.assert_allclose(f_a(x_v, y_v), f_b(x_v, y_v)) # Test infer_shape self._compile_and_check([x, y], [theano.sparse.dot(x, y)], [x_v, y_v], (Dot, Usmm, UsmmCscDense))
Example #19
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_csc_dense(self): x = theano.sparse.csc_matrix('x') y = theano.tensor.matrix('y') v = theano.tensor.vector('v') for (x, y, x_v, y_v) in [(x, y, self.x_csc, self.y), (x, v, self.x_csc, self.v_100), (v, x, self.v_10, self.x_csc)]: f_a = theano.function([x, y], theano.sparse.dot(x, y)) f_b = lambda x, y: x * y utt.assert_allclose(f_a(x_v, y_v), f_b(x_v, y_v)) # Test infer_shape self._compile_and_check([x, y], [theano.sparse.dot(x, y)], [x_v, y_v], (Dot, Usmm, UsmmCscDense))
Example #20
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_GetItemList(self): a, A = sparse_random_inputs('csr', (4, 5)) b, B = sparse_random_inputs('csc', (4, 5)) y = a[0][[0, 1, 2, 3, 1]] z = b[0][[0, 1, 2, 3, 1]] fa = theano.function([a[0]], y) fb = theano.function([b[0]], z) t_geta = fa(A[0]).todense() t_getb = fb(B[0]).todense() s_geta = scipy.sparse.csr_matrix(A[0])[[0, 1, 2, 3, 1]].todense() s_getb = scipy.sparse.csc_matrix(B[0])[[0, 1, 2, 3, 1]].todense() utt.assert_allclose(t_geta, s_geta) utt.assert_allclose(t_getb, s_getb)
Example #21
Source File: theano_backend.py From Att-ChemdNER with Apache License 2.0 | 6 votes |
def placeholder(shape=None, ndim=None, dtype=None, sparse=False, name=None): '''Instantiate an input data placeholder variable. ''' if dtype is None: dtype = floatx() if shape is None and ndim is None: raise ValueError('Specify either a shape or ndim value.') if shape is not None: ndim = len(shape) else: shape = tuple([None for _ in range(ndim)]) broadcast = (False,) * ndim if sparse: _assert_sparse_module() x = th_sparse_module.csr_matrix(name=name, dtype=dtype) else: x = T.TensorType(dtype, broadcast)(name) x._keras_shape = shape x._uses_learning_phase = False return x
Example #22
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_int32_dtype(self): # Reported on the theano-user mailing-list: # https://groups.google.com/d/msg/theano-users/MT9ui8LtTsY/rwatwEF9zWAJ size = 9 intX = 'int32' C = tensor.matrix('C', dtype=intX) I = tensor.matrix('I', dtype=intX) fI = I.flatten() data = tensor.ones_like(fI) indptr = tensor.arange(data.shape[0] + 1, dtype='int32') m1 = sparse.CSR(data, fI, indptr, (8, size)) m2 = sparse.dot(m1, C) y = m2.reshape(shape=(2, 4, 9), ndim=3) f = theano.function(inputs=[I, C], outputs=y) i = numpy.asarray([[4, 3, 7, 7], [2, 8, 4, 5]], dtype=intX) a = numpy.asarray(numpy.random.randint(0, 100, (size, size)), dtype=intX) f(i, a)
Example #23
Source File: theano_backend.py From Att-ChemdNER with Apache License 2.0 | 5 votes |
def _assert_sparse_module(): if not th_sparse_module: raise ImportError("Failed to import theano.sparse\n" "You probably need to pip install nose-parameterized")
Example #24
Source File: test_basic.py From D-VAE with MIT License | 5 votes |
def test_grad(self): for format in sparse.sparse_formats: variable, data = sparse_random_inputs(format, shape=(8, 10)) variable.append(tensor.vector()) data.append(numpy.random.random(10).astype(config.floatX)) verify_grad_sparse(self.op, data, structured=True)
Example #25
Source File: test_basic.py From D-VAE with MIT License | 5 votes |
def setUp(self): super(ColScaleCSCTester, self).setUp() self.op = sparse.col_scale
Example #26
Source File: test_basic.py From D-VAE with MIT License | 5 votes |
def test_grad(self): for format in sparse.sparse_formats: variable, data = sparse_random_inputs(format, shape=(8, 10)) variable.append(tensor.vector()) data.append(numpy.random.random(8).astype(config.floatX)) verify_grad_sparse(self.op, data, structured=True)
Example #27
Source File: test_basic.py From D-VAE with MIT License | 5 votes |
def setUp(self): super(SpSumTester, self).setUp() self.op_class = sparse.SpSum self.op = sparse.sp_sum
Example #28
Source File: test_basic.py From D-VAE with MIT License | 5 votes |
def _format_info(nb): x = {} mat = {} for format in sparse.sparse_formats: variable = getattr(theano.sparse, format + '_matrix') spa = getattr(sp, format + '_matrix') x[format] = [variable() for t in range(nb)] mat[format] = [spa(random_lil((3, 4), theano.config.floatX, 8)) for t in range(nb)] return x, mat
Example #29
Source File: test_basic.py From D-VAE with MIT License | 5 votes |
def setUp(self): super(AddSSDataTester, self).setUp() self.op_class = AddSSData for format in sparse.sparse_formats: variable = getattr(theano.sparse, format + '_matrix') rand = numpy.array( numpy.random.random_integers(3, size=(3, 4)) - 1, dtype=theano.config.floatX) constant = as_sparse_format(rand, format) self.x[format] = [variable() for t in range(2)] self.a[format] = [constant for t in range(2)]
Example #30
Source File: test_basic.py From D-VAE with MIT License | 5 votes |
def test_grad(self): for format in sparse.sparse_formats: for out_f in sparse.sparse_formats: for dtype in sparse.float_dtypes: verify_grad_sparse( self.op_class(format=out_f, dtype=dtype), self.mat[format], structured=False, eps=1e-2, )