def test_qr_modes(): rng = np.random.RandomState(utt.fetch_seed()) A = tensor.matrix("A", dtype=theano.config.floatX) a = rng.rand(4, 4).astype(theano.config.floatX) f = function([A], qr(A)) t_qr = f(a) n_qr = np.linalg.qr(a) assert _allclose(n_qr, t_qr) for mode in ["reduced", "r", "raw"]: f = function([A], qr(A, mode)) t_qr = f(a) n_qr = np.linalg.qr(a, mode) if isinstance(n_qr, (list, tuple)): assert _allclose(n_qr[0], t_qr[0]) assert _allclose(n_qr[1], t_qr[1]) else: assert _allclose(n_qr, t_qr) try: n_qr = np.linalg.qr(a, "complete") f = function([A], qr(A, "complete")) t_qr = f(a) assert _allclose(n_qr, t_qr) except TypeError as e: assert "name 'complete' is not defined" in str(e)
def test_gpu_qr_incomplete_opt(self): A = theano.tensor.fmatrix("A") fn = theano.function([A], qr(A, mode="r"), mode=mode_with_gpu) assert any([ isinstance(node.op, GpuMagmaQR) and not node.op.complete for node in fn.maker.fgraph.toposort() ])
def test_gpu_qr_incomplete_opt(self): A = theano.tensor.fmatrix("A") fn = theano.function([A], qr(A, mode='r'), mode=mode_with_gpu) assert any([ isinstance(node.op, GpuMagmaQR) and not node.op.complete for node in fn.maker.fgraph.toposort() ])