Python theano.dot() Examples
The following are 30
code examples of theano.dot().
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_blas.py From D-VAE with MIT License | 6 votes |
def test_a_strides(self): vs = self.get_data() alpha_v, beta_v, a_v, x_v, y_v = vs alpha, beta, a, x, y = [self.shared(v) for v in vs] a_v = a_v[::-1, ::-1] a.set_value( a.get_value(borrow=True, return_internal_type=True)[::-1, ::-1], borrow=True) desired_oy = alpha_v * matrixmultiply(a_v, x_v) + beta_v * y_v oy = alpha * T.dot(a, x) + beta * y oy_func = theano.function([], oy, mode=self.mode) self.assertFunctionContains1(oy_func, self.gemv) oy_v = oy_func() assert_array_almost_equal(desired_oy, oy_v)
Example #2
Source File: test_blas.py From D-VAE with MIT License | 6 votes |
def test_gemm_nested(): X, Y, Z, a, b = T.matrix('X'), T.matrix('Y'), T.matrix('Z'), T.scalar( 'a'), T.scalar('b') R, S, U, c, d = T.matrix('R'), T.matrix('S'), T.matrix('U'), T.scalar( 'c'), T.scalar('d') just_gemm([X, Y, Z, R, S, U, a, b, c, d], [a * Z - b * (c * T.dot(X, Y) + d * Z)], ishapes=[(2, 3), (3, 4), (2, 4), (2, 3), (3, 4), ( 2, 4), (), (), (), ()], max_graphlen=1) # print "---------------------" just_gemm([X, Y, Z, R, S, U, a, b, c, d], [a * Z - b * (c * T.dot(X, Y) + d * Z + c * Z)], ishapes=[(2, 3), (3, 4), (2, 4), (2, 3), (3, 4), ( 2, 4), (), (), (), ()], max_graphlen=1) # print "---------------------" just_gemm([X, Y, Z, R, S, U, a, b, c, d], [a * Z - b * (c * T.dot(X, Y) + d * Z + c * U)], ishapes=[(2, 3), (3, 4), (2, 4), (2, 3), (3, 4), ( 2, 4), (), (), (), ()], max_graphlen=3)
Example #3
Source File: test_blas.py From attention-lvcsr with MIT License | 6 votes |
def test_dot_vm(self): ''' Test vector dot matrix ''' rng = numpy.random.RandomState(unittest_tools.fetch_seed()) v = theano.shared(numpy.array(rng.uniform(size=(2,)), dtype='float32')) m = theano.shared(numpy.array(rng.uniform(size=(2, 3)), dtype='float32')) f = theano.function([], theano.dot(v, m), mode=mode_blas_opt) # Assert that the dot was optimized somehow self.assertFunctionContains0(f, T.dot) self.assertFunctionContains1(f, Gemv(True)) # Assert they produce the same output assert numpy.allclose(f(), numpy.dot(v.get_value(), m.get_value())) # Assert it works when m has no contiguous dimension m.set_value( m.get_value(borrow=True)[::-1, ::-1], borrow=True) assert numpy.allclose(f(), numpy.dot(v.get_value(), m.get_value()))
Example #4
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_op_sd(self): for format in sparse.sparse_formats: for dtype in sparse.all_dtypes: variable, data = sparse_random_inputs(format, shape=(10, 10), out_dtype=dtype, n=2, p=0.1) variable[1] = tensor.TensorType(dtype=dtype, broadcastable=(False, False))() data[1] = data[1].toarray() f = theano.function(variable, self.op(*variable)) tested = f(*data) expected = numpy.dot(data[0].toarray(), data[1]) assert tested.format == format assert tested.dtype == expected.dtype tested = tested.toarray() utt.assert_allclose(tested, expected)
Example #5
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_op_ss(self): for format in sparse.sparse_formats: for dtype in sparse.all_dtypes: variable, data = sparse_random_inputs(format, shape=(10, 10), out_dtype=dtype, n=2, p=0.1) f = theano.function(variable, self.op(*variable)) tested = f(*data) x, y = [m.toarray() for m in data] expected = numpy.dot(x, y) assert tested.format == format assert tested.dtype == expected.dtype tested = tested.toarray() utt.assert_allclose(tested, expected)
Example #6
Source File: test_blas.py From attention-lvcsr with MIT License | 6 votes |
def test_dot_w_self(): # This can trigger problems in the optimization because what would # normally be a gemm must not be because the output is aliased to # one of the inputs. A = shared(value=numpy.ones((2, 2))) B = T.matrix() p = T.dot(A, A) * B grad = T.grad(T.mean(p), A) f = theano.function([B], p, updates=[(A, A - grad)]) # tests correctness in debugmode f(numpy.asarray([[0, 1], [2, 3]], dtype=config.floatX)) ############################################################################### # Tests for Gemv ###############################################################################
Example #7
Source File: test_blas.py From D-VAE with MIT License | 6 votes |
def test_dot_vm(self): ''' Test vector dot matrix ''' rng = numpy.random.RandomState(unittest_tools.fetch_seed()) v = theano.shared(numpy.array(rng.uniform(size=(2,)), dtype='float32')) m = theano.shared(numpy.array(rng.uniform(size=(2, 3)), dtype='float32')) f = theano.function([], theano.dot(v, m), mode=mode_blas_opt) # Assert that the dot was optimized somehow self.assertFunctionContains0(f, T.dot) self.assertFunctionContains1(f, Gemv(True)) # Assert they produce the same output assert numpy.allclose(f(), numpy.dot(v.get_value(), m.get_value())) # Assert it works when m has no contiguous dimension m.set_value( m.get_value(borrow=True)[::-1, ::-1], borrow=True) assert numpy.allclose(f(), numpy.dot(v.get_value(), m.get_value()))
Example #8
Source File: test_blas.py From D-VAE with MIT License | 6 votes |
def test_dot_mv(self): ''' Test matrix dot vector ''' rng = numpy.random.RandomState(unittest_tools.fetch_seed()) v = theano.shared(numpy.array(rng.uniform(size=(2,)), dtype='float32')) m = theano.shared(numpy.array(rng.uniform(size=(3, 2)), dtype='float32')) f = theano.function([], theano.dot(m, v), mode=mode_blas_opt) # Assert that the dot was optimized somehow self.assertFunctionContains0(f, T.dot) self.assertFunctionContains1(f, Gemv(True)) # Assert they produce the same output assert numpy.allclose(f(), numpy.dot(m.get_value(), v.get_value())) # Assert it works when m has no contiguous dimension m.set_value( m.get_value(borrow=True)[::-1, ::-1], borrow=True) assert numpy.allclose(f(), numpy.dot(m.get_value(), v.get_value()))
Example #9
Source File: test_blas.py From attention-lvcsr with MIT License | 6 votes |
def test_dot22scalar_cast(): """ Test that in `dot22_to_dot22scalar` we properly cast integers to floats. """ # Note that this test was failing before d5ff6904. A = T.dmatrix() for scalar_int_type in T.int_dtypes: y = T.scalar(dtype=scalar_int_type) f = theano.function([A, y], T.dot(A, A) * y, mode=mode_blas_opt) assert _dot22scalar in [x.op for x in f.maker.fgraph.toposort()] A = T.fmatrix() for scalar_int_type in T.int_dtypes: y = T.scalar(dtype=scalar_int_type) f = theano.function([A, y], T.dot(A, A) * y, mode=mode_blas_opt) if scalar_int_type in ['int32', 'int64']: assert _dot22 in [x.op for x in f.maker.fgraph.toposort()] else: assert _dot22scalar in [x.op for x in f.maker.fgraph.toposort()]
Example #10
Source File: test_blas.py From attention-lvcsr with MIT License | 6 votes |
def test_dot22(): for dtype1 in ['float32', 'float64', 'complex64', 'complex128']: a = T.matrix(dtype=dtype1) for dtype2 in ['float32', 'float64', 'complex64', 'complex128']: b = T.matrix(dtype=dtype2) f = theano.function([a, b], T.dot(a, b), mode=mode_blas_opt) topo = f.maker.fgraph.toposort() if dtype1 == dtype2: assert _dot22 in [x.op for x in topo], (dtype1, dtype2) else: check = [isinstance(x.op, T.Dot) for x in topo] assert any(check), (dtype1, dtype2) rng = numpy.random.RandomState(unittest_tools.fetch_seed()) def cmp(a_shp, b_shp): av = rng.uniform(size=a_shp).astype(dtype1) bv = rng.uniform(size=b_shp).astype(dtype2) f(av, bv) cmp((3, 4), (4, 5)) cmp((0, 4), (4, 5)) cmp((3, 0), (0, 5)) cmp((3, 4), (4, 0)) cmp((0, 4), (4, 0)) cmp((0, 0), (0, 0))
Example #11
Source File: test_blas.py From D-VAE with MIT License | 6 votes |
def test_simple(self): alpha, beta, a, x, y = [self.shared(value) for value in self.get_data()] desired_oy = alpha.get_value() * matrixmultiply(a. get_value(), x.get_value()) + beta.get_value() * y.get_value() oy = alpha * T.dot(a, x) + beta * y oy_func = theano.function([], oy, mode=self.mode) topo = oy_func.maker.fgraph.toposort() self.assertFunctionContains1(oy_func, self.gemv) oy_val = oy_func() assert_array_almost_equal(desired_oy, oy_val)
Example #12
Source File: test_blas.py From D-VAE with MIT License | 6 votes |
def test_default_beta_y(self): vs = self.get_data() alpha_v, beta_v, a_v, x_v, y_v = vs a = self.shared(a_v) x = self.shared(x_v) desired_oy = matrixmultiply(a_v, x_v) oy = T.dot(a, x) oy_func = theano.function([], oy, mode=self.mode) self.assertFunctionContains1(oy_func, self.gemv_inplace) oy_v = oy_func() assert_array_almost_equal(desired_oy, oy_v)
Example #13
Source File: test_blas.py From D-VAE with MIT License | 6 votes |
def test_simple_transpose(self): vs = self.get_data() alpha_v, beta_v, a_v, x_v, y_v = vs alpha, beta, a, x, y = [self.shared(v) for v in vs] desired_oy = alpha_v * matrixmultiply(transpose(a_v), x_v) + beta_v * y_v oy = alpha * T.dot(a.T, x) + beta * y oy_func = theano.function([], oy, mode=self.mode) self.assertFunctionContains1(oy_func, self.gemv) oy_v = oy_func() assert_array_almost_equal(desired_oy, oy_v)
Example #14
Source File: test_blas.py From D-VAE with MIT License | 6 votes |
def test_x_stride_transpose(self): vs = self.get_data(x_stride=2) alpha_v, beta_v, a_v, x_v, y_v = vs alpha, beta, a, x, y = [self.shared(v) for v in vs] desired_oy = alpha_v * matrixmultiply(transpose(a_v), x_v[:: 2]) + beta_v * y_v oy = alpha * T.dot(a.T, x[::2]) + beta * y oy_func = theano.function([], oy, mode=self.mode) self.assertFunctionContains1(oy_func, self.gemv) oy_v = oy_func() assert_array_almost_equal(desired_oy, oy_v)
Example #15
Source File: test_blas.py From D-VAE with MIT License | 6 votes |
def test_y_stride_transpose(self): vs = self.get_data(y_stride=2) alpha_v, beta_v, a_v, x_v, y_v = vs alpha, beta, a, x, y = [self.shared(v) for v in vs] desired_oy = alpha_v * matrixmultiply(transpose(a_v), x_v) + beta_v * y_v[::2] oy = alpha * T.dot(a.T, x) + beta * y[::2] oy_func = theano.function([], oy, mode=self.mode) self.assertFunctionContains1(oy_func, self.gemv) oy_v = oy_func() assert_array_almost_equal(desired_oy, oy_v)
Example #16
Source File: test_blas.py From attention-lvcsr with MIT License | 6 votes |
def test_dot_mv(self): ''' Test matrix dot vector ''' rng = numpy.random.RandomState(unittest_tools.fetch_seed()) v = theano.shared(numpy.array(rng.uniform(size=(2,)), dtype='float32')) m = theano.shared(numpy.array(rng.uniform(size=(3, 2)), dtype='float32')) f = theano.function([], theano.dot(m, v), mode=mode_blas_opt) # Assert that the dot was optimized somehow self.assertFunctionContains0(f, T.dot) self.assertFunctionContains1(f, Gemv(True)) # Assert they produce the same output assert numpy.allclose(f(), numpy.dot(m.get_value(), v.get_value())) # Assert it works when m has no contiguous dimension m.set_value( m.get_value(borrow=True)[::-1, ::-1], borrow=True) assert numpy.allclose(f(), numpy.dot(m.get_value(), v.get_value()))
Example #17
Source File: test_blas.py From D-VAE with MIT License | 6 votes |
def test_a_strides_transpose(self): vs = self.get_data() alpha_v, beta_v, a_v, x_v, y_v = vs alpha, beta, a, x, y = [self.shared(v) for v in vs] a_v = a_v[::-1, ::-1] a.set_value( a.get_value(borrow=True, return_internal_type=True)[::-1, ::-1], borrow=True) desired_oy = alpha_v * matrixmultiply(transpose(a_v), x_v) + beta_v * y_v oy = alpha * T.dot(a.T, x) + beta * y oy_func = theano.function([], oy, mode=self.mode) self.assertFunctionContains1(oy_func, self.gemv) oy_v = oy_func() assert_array_almost_equal(desired_oy, oy_v)
Example #18
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 #19
Source File: test_blas_c.py From D-VAE with MIT License | 6 votes |
def test_optimizations_vm(self): ''' Test vector dot matrix ''' f = theano.function([self.x, self.A], theano.dot(self.x, self.A), mode=self.mode) # Assert that the dot was optimized somehow self.assertFunctionContains0(f, tensor.dot) self.assertFunctionContains1( f, CGemv(inplace=True) ) # Assert they produce the same output assert numpy.allclose(f(self.xval, self.Aval), numpy.dot(self.xval, self.Aval)) # Test with negative strides on 2 dims assert numpy.allclose(f(self.xval, self.Aval[::-1, ::-1]), numpy.dot(self.xval, self.Aval[::-1, ::-1]))
Example #20
Source File: test_blas_c.py From D-VAE with MIT License | 6 votes |
def test_optimizations_mv(self): ''' Test matrix dot vector ''' f = theano.function([self.A, self.y], theano.dot(self.A, self.y), mode=self.mode) # Assert that the dot was optimized somehow self.assertFunctionContains0(f, tensor.dot) self.assertFunctionContains1( f, CGemv(inplace=True) ) # Assert they produce the same output assert numpy.allclose(f(self.Aval, self.yval), numpy.dot(self.Aval, self.yval)) # Test with negative strides on 2 dims assert numpy.allclose(f(self.Aval[::-1, ::-1], self.yval), numpy.dot(self.Aval[::-1, ::-1], self.yval))
Example #21
Source File: nlinalg.py From D-VAE with MIT License | 6 votes |
def grad(self, inputs, g_outputs): r"""The gradient function should return .. math:: V\frac{\partial X^{-1}}{\partial X}, where :math:`V` corresponds to ``g_outputs`` and :math:`X` to ``inputs``. Using the `matrix cookbook <http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=3274>`_, one can deduce that the relation corresponds to .. math:: (X^{-1} \cdot V^{T} \cdot X^{-1})^T. """ x, = inputs xi = self(x) gz, = g_outputs # TT.dot(gz.T,xi) return [-matrix_dot(xi, gz.T, xi).T]
Example #22
Source File: nlinalg.py From D-VAE with MIT License | 6 votes |
def grad(self, inputs, g_outputs): r"""The gradient function should return .. math:: V\frac{\partial X^{-1}}{\partial X}, where :math:`V` corresponds to ``g_outputs`` and :math:`X` to ``inputs``. Using the `matrix cookbook <http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=3274>`_, one can deduce that the relation corresponds to .. math:: (X^{-1} \cdot V^{T} \cdot X^{-1})^T. """ x, = inputs xi = self(x) gz, = g_outputs # TT.dot(gz.T,xi) return [-matrix_dot(xi, gz.T, xi).T]
Example #23
Source File: test_blas.py From attention-lvcsr with MIT License | 6 votes |
def test_inplace0(): # should fail to insert gemm_inplace because gemm_inplace would # create cycles X, Y, Z, a, b = T.matrix('X'), T.matrix('Y'), T.matrix('Z'), T.scalar( 'a'), T.scalar('b') R, S, c = T.matrix('R'), T.matrix('S'), T.scalar('c') f = inplace_func([Z, b, R, S], [Z * (Z + b * T.dot(R, S).T)], mode='FAST_RUN') if (gemm_inplace in [n.op for n in f.maker.fgraph.apply_nodes]): print(pp(f.maker.fgraph.outputs[0])) raise Failure('gemm_inplace in graph') assert gemm_no_inplace in [n.op for n in f.maker.fgraph.apply_nodes] # gemm_inplace should be inserted here, to work in-place on Z*c f = inplace_func([X, Y, Z, a, b, R, S, c], [Z * (c * Z + a * T.dot(X, Y) + b * T.dot(R, S).T)], mode='FAST_RUN') if (not gemm_inplace in [n.op for n in f.maker.fgraph.apply_nodes]): theano.printing.debugprint(f) raise Failure('no gemm_inplace in graph')
Example #24
Source File: test_basic.py From attention-lvcsr 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 #25
Source File: test_basic.py From attention-lvcsr 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 #26
Source File: test_basic.py From attention-lvcsr 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 #27
Source File: test_basic.py From attention-lvcsr 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 #28
Source File: test_basic.py From attention-lvcsr with MIT License | 6 votes |
def test_op_ss(self): for format in sparse.sparse_formats: for dtype in sparse.all_dtypes: variable, data = sparse_random_inputs(format, shape=(10, 10), out_dtype=dtype, n=2, p=0.1) f = theano.function(variable, self.op(*variable)) tested = f(*data) x, y = [m.toarray() for m in data] expected = numpy.dot(x, y) assert tested.format == format assert tested.dtype == expected.dtype tested = tested.toarray() utt.assert_allclose(tested, expected)
Example #29
Source File: test_basic.py From attention-lvcsr with MIT License | 6 votes |
def test_op_sd(self): for format in sparse.sparse_formats: for dtype in sparse.all_dtypes: variable, data = sparse_random_inputs(format, shape=(10, 10), out_dtype=dtype, n=2, p=0.1) variable[1] = tensor.TensorType(dtype=dtype, broadcastable=(False, False))() data[1] = data[1].toarray() f = theano.function(variable, self.op(*variable)) tested = f(*data) expected = numpy.dot(data[0].toarray(), data[1]) assert tested.format == format assert tested.dtype == expected.dtype tested = tested.toarray() utt.assert_allclose(tested, expected)
Example #30
Source File: test_blas.py From attention-lvcsr with MIT License | 6 votes |
def test_gemm_nested(): X, Y, Z, a, b = T.matrix('X'), T.matrix('Y'), T.matrix('Z'), T.scalar( 'a'), T.scalar('b') R, S, U, c, d = T.matrix('R'), T.matrix('S'), T.matrix('U'), T.scalar( 'c'), T.scalar('d') just_gemm([X, Y, Z, R, S, U, a, b, c, d], [a * Z - b * (c * T.dot(X, Y) + d * Z)], ishapes=[(2, 3), (3, 4), (2, 4), (2, 3), (3, 4), ( 2, 4), (), (), (), ()], max_graphlen=1) # print "---------------------" just_gemm([X, Y, Z, R, S, U, a, b, c, d], [a * Z - b * (c * T.dot(X, Y) + d * Z + c * Z)], ishapes=[(2, 3), (3, 4), (2, 4), (2, 3), (3, 4), ( 2, 4), (), (), (), ()], max_graphlen=1) # print "---------------------" just_gemm([X, Y, Z, R, S, U, a, b, c, d], [a * Z - b * (c * T.dot(X, Y) + d * Z + c * U)], ishapes=[(2, 3), (3, 4), (2, 4), (2, 3), (3, 4), ( 2, 4), (), (), (), ()], max_graphlen=3)