提交 a52f970e authored 作者: Reyhane Askari's avatar Reyhane Askari 提交者: GitHub

Merge pull request #5756 from shawntan/issue-5742-2

#5742 Removed theano/sandbox/linalg/ops.py and theano/sandbox/linalg/tests/test_linalg.py from flake8 whitelist
from __future__ import absolute_import, print_function, division from __future__ import absolute_import, print_function, division
from .ops import (cholesky, matrix_inverse, solve, from theano.tensor.slinalg import (cholesky, solve, eigvalsh)
diag, extract_diag, alloc_diag, from theano.tensor.nlinalg import (matrix_inverse,
det, psd, eig, eigh, eigvalsh, diag, extract_diag, alloc_diag,
trace, spectral_radius_bound) det, eig, eigh,
trace)
from theano.sandbox.linalg.ops import psd, spectral_radius_bound
from __future__ import absolute_import, print_function, division from __future__ import absolute_import, print_function, division
import logging import logging
logger = logging.getLogger(__name__)
import numpy
from six import iteritems, integer_types from six import iteritems, integer_types
from six.moves import xrange from six.moves import xrange
from theano.gof import Op, Apply from theano.gof import Op, Apply
from theano.tensor import as_tensor_variable, dot, DimShuffle, Dot from theano.tensor import DimShuffle, Dot
from theano.tensor.blas import Dot22 from theano.tensor.blas import Dot22
from theano import tensor from theano import tensor
import theano.tensor import theano.tensor
from theano.tensor.opt import (register_stabilize, from theano.tensor.opt import (register_stabilize,
register_specialize, register_canonicalize) register_specialize,
register_canonicalize)
from theano.gof import local_optimizer from theano.gof import local_optimizer
from theano.gof.opt import Optimizer from theano.gof.opt import Optimizer
from theano.gradient import DisconnectedType
from theano.tensor.nlinalg import (MatrixInverse,
from theano.tensor.nlinalg import ( MatrixInverse, matrix_inverse,
matrix_inverse, extract_diag,
MatrixPinv, trace,
pinv, det)
AllocDiag,
alloc_diag, from theano.tensor.slinalg import (Cholesky,
ExtractDiag, cholesky,
extract_diag, Solve,
diag, solve,
trace, imported_scipy)
Det,
det,
Eig, logger = logging.getLogger(__name__)
eig,
Eigh,
EighGrad,
eigh,
matrix_dot,
_zero_disconnected,
qr,
svd,
lstsq,
matrix_power,
norm
)
from theano.tensor.slinalg import ( Cholesky,
cholesky,
CholeskyGrad,
Solve,
solve,
Eigvalsh,
EigvalshGrad,
eigvalsh
)
try:
import scipy.linalg
imported_scipy = True
except ImportError:
# some ops (e.g. Cholesky, Solve, A_Xinv_b) won't work
imported_scipy = False
class Hint(Op): class Hint(Op):
...@@ -212,8 +180,6 @@ class HintsFeature(object): ...@@ -212,8 +180,6 @@ class HintsFeature(object):
class HintsOptimizer(Optimizer): class HintsOptimizer(Optimizer):
""" """
Optimizer that serves to add HintsFeature as an fgraph feature. Optimizer that serves to add HintsFeature as an fgraph feature.
""" """
def __init__(self): def __init__(self):
...@@ -310,8 +276,8 @@ def tag_solve_triangular(node): ...@@ -310,8 +276,8 @@ def tag_solve_triangular(node):
return [Solve('lower_triangular')(A, b)] return [Solve('lower_triangular')(A, b)]
else: else:
return [Solve('upper_triangular')(A, b)] return [Solve('upper_triangular')(A, b)]
if (A.owner and isinstance(A.owner.op, DimShuffle) if (A.owner and isinstance(A.owner.op, DimShuffle) and
and A.owner.op.new_order == (1, 0)): A.owner.op.new_order == (1, 0)):
A_T, = A.owner.inputs A_T, = A.owner.inputs
if A_T.owner and isinstance(A_T.owner.op, type(cholesky)): if A_T.owner and isinstance(A_T.owner.op, type(cholesky)):
if A_T.owner.op.lower: if A_T.owner.op.lower:
...@@ -423,6 +389,5 @@ def spectral_radius_bound(X, log2_exponent): ...@@ -423,6 +389,5 @@ def spectral_radius_bound(X, log2_exponent):
XX = X XX = X
for i in xrange(log2_exponent): for i in xrange(log2_exponent):
XX = tensor.dot(XX, XX) XX = tensor.dot(XX, XX)
return tensor.pow( return tensor.pow(trace(XX),
trace(XX), 2 ** (-log2_exponent))
2 ** (-log2_exponent))
...@@ -163,4 +163,4 @@ def test_matrix_inverse_solve(): ...@@ -163,4 +163,4 @@ def test_matrix_inverse_solve():
b = theano.tensor.dmatrix('b') b = theano.tensor.dmatrix('b')
node = matrix_inverse(A).dot(b).owner node = matrix_inverse(A).dot(b).owner
[out] = inv_as_solve.transform(node) [out] = inv_as_solve.transform(node)
assert isinstance(out.owner.op, Solve) assert isinstance(out.owner.op, Solve)
...@@ -77,10 +77,8 @@ whitelist_flake8 = [ ...@@ -77,10 +77,8 @@ whitelist_flake8 = [
"sandbox/cuda/__init__.py", "sandbox/cuda/__init__.py",
"sandbox/cuda/tests/__init__.py", "sandbox/cuda/tests/__init__.py",
"sandbox/gpuarray/__init__.py", "sandbox/gpuarray/__init__.py",
"sandbox/linalg/ops.py",
"sandbox/linalg/__init__.py", "sandbox/linalg/__init__.py",
"sandbox/linalg/tests/__init__.py", "sandbox/linalg/tests/__init__.py",
"sandbox/linalg/tests/test_linalg.py",
"scan_module/scan_utils.py", "scan_module/scan_utils.py",
"scan_module/scan_views.py", "scan_module/scan_views.py",
"scan_module/scan.py", "scan_module/scan.py",
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论