Unverified 提交 1d3454fa authored 作者: Brandon T. Willard's avatar Brandon T. Willard 提交者: GitHub

Merge pull request #85 from pymc-devs/fix-84

Stop importing test suite from __init__
...@@ -607,7 +607,7 @@ Breakpoint during Theano function execution ...@@ -607,7 +607,7 @@ Breakpoint during Theano function execution
------------------------------------------- -------------------------------------------
You can set a breakpoint during the execution of a Theano function with You can set a breakpoint during the execution of a Theano function with
:class:`PdbBreakpoint <tests.breakpoint.PdbBreakpoint>`. :class:`PdbBreakpoint <theano.breakpoint.PdbBreakpoint>`.
:class:`PdbBreakpoint <tests.breakpoint.PdbBreakpoint>` automatically :class:`PdbBreakpoint <theano.breakpoint.PdbBreakpoint>` automatically
detects available debuggers and uses the first available in the following order: detects available debuggers and uses the first available in the following order:
`pudb`, `ipdb`, or `pdb`. `pudb`, `ipdb`, or `pdb`.
[flake8] [flake8]
ignore=E501,E123,E133,FI12,FI14,FI15,FI50,FI51,FI53,W503,W504,E203,C901,E231,E741 ignore=E501,E123,E133,FI12,FI14,FI15,FI50,FI51,FI53,W503,W504,E203,C901,E231,E741
per-file-ignores = per-file-ignores =
theano/sparse/sandbox/truedot.py:F401
theano/sparse/sandbox/sp2.py:F401 theano/sparse/sandbox/sp2.py:F401
tests/sparse/test_basic.py:E402 tests/sparse/test_basic.py:E402
tests/sparse/test_opt.py:E402 tests/sparse/test_opt.py:E402
......
...@@ -32,7 +32,7 @@ from theano.gpuarray.subtensor import GpuSubtensor ...@@ -32,7 +32,7 @@ from theano.gpuarray.subtensor import GpuSubtensor
from tests import unittest_tools as utt from tests import unittest_tools as utt
from tests.gpuarray.config import mode_with_gpu, mode_without_gpu, test_ctx_name from tests.gpuarray.config import mode_with_gpu, mode_without_gpu, test_ctx_name
from tests.theano.tensor.test_basic import ( from tests.tensor.test_basic import (
rand, rand,
safe_make_node, safe_make_node,
TestAlloc, TestAlloc,
......
...@@ -9,11 +9,11 @@ from theano.gpuarray.blas import GpuCorrMM, GpuCorrMM_gradWeights, GpuCorrMM_gra ...@@ -9,11 +9,11 @@ from theano.gpuarray.blas import GpuCorrMM, GpuCorrMM_gradWeights, GpuCorrMM_gra
from tests import unittest_tools as utt from tests import unittest_tools as utt
from tests.gpuarray.config import mode_with_gpu, mode_without_gpu, ref_cast from tests.gpuarray.config import mode_with_gpu, mode_without_gpu, ref_cast
from tests.theano.tensor.nnet.test_abstract_conv import ( from tests.tensor.nnet.test_abstract_conv import (
TestGroupedConvNoOptim, TestGroupedConvNoOptim,
TestUnsharedConv, TestUnsharedConv,
) )
from tests.tensor.nnet.theano.test_abstract_conv import ( from tests.tensor.nnet.test_abstract_conv import (
TestAsymmetricPadding, TestAsymmetricPadding,
TestCausalConv, TestCausalConv,
) )
......
...@@ -9,6 +9,7 @@ import theano.tensor.slinalg as slinalg ...@@ -9,6 +9,7 @@ import theano.tensor.slinalg as slinalg
from theano import tensor from theano import tensor
from theano.gof.opt import check_stack_trace from theano.gof.opt import check_stack_trace
from theano.tensor.nnet import abstract_conv from theano.tensor.nnet import abstract_conv
from theano.breakpoint import PdbBreakpoint
from theano.gpuarray import basic_ops from theano.gpuarray import basic_ops
from theano.gpuarray.type import GpuArrayType, gpuarray_shared_constructor, get_context from theano.gpuarray.type import GpuArrayType, gpuarray_shared_constructor, get_context
from theano.gpuarray.basic_ops import ( from theano.gpuarray.basic_ops import (
...@@ -34,7 +35,6 @@ from theano.gpuarray.linalg import GpuCusolverSolve, cusolver_available, GpuChol ...@@ -34,7 +35,6 @@ from theano.gpuarray.linalg import GpuCusolverSolve, cusolver_available, GpuChol
from tests import unittest_tools as utt, test_ifelse from tests import unittest_tools as utt, test_ifelse
from tests.tensor import test_basic from tests.tensor import test_basic
from tests.breakpoint import PdbBreakpoint
from tests.gpuarray.config import mode_with_gpu, mode_without_gpu, test_ctx_name from tests.gpuarray.config import mode_with_gpu, mode_without_gpu, test_ctx_name
......
...@@ -15,7 +15,7 @@ from tests.gpuarray.config import test_ctx_name ...@@ -15,7 +15,7 @@ from tests.gpuarray.config import test_ctx_name
from tests.gpuarray.test_basic_ops import rand_gpuarray from tests.gpuarray.test_basic_ops import rand_gpuarray
# Disabled for now # Disabled for now
# from tests.theano.tensor.test_sharedvar import makeSharedTester # from tests.tensor.test_sharedvar import makeSharedTester
def test_deep_copy(): def test_deep_copy():
......
...@@ -3,8 +3,9 @@ import numpy as np ...@@ -3,8 +3,9 @@ import numpy as np
import theano import theano
import theano.tensor as T import theano.tensor as T
from theano.breakpoint import PdbBreakpoint
from tests import unittest_tools as utt from tests import unittest_tools as utt
from tests.breakpoint import PdbBreakpoint
class TestPdbBreakpoint(utt.InferShapeTester): class TestPdbBreakpoint(utt.InferShapeTester):
......
...@@ -12,9 +12,9 @@ from functools import wraps ...@@ -12,9 +12,9 @@ from functools import wraps
from copy import copy, deepcopy from copy import copy, deepcopy
from six import integer_types from six import integer_types
from six.moves import StringIO
from theano import config from theano import config
from theano.compile.debugmode import str_diagnostic
_logger = logging.getLogger("tests.unittest_tools") _logger = logging.getLogger("tests.unittest_tools")
...@@ -282,71 +282,6 @@ class InferShapeTester: ...@@ -282,71 +282,6 @@ class InferShapeTester:
assert np.all(out.shape == shape), (out.shape, shape) assert np.all(out.shape == shape), (out.shape, shape)
def str_diagnostic(expected, value, rtol, atol):
"""Return a pretty multiline string representating the cause
of the exception"""
sio = StringIO()
try:
ssio = StringIO()
print(" : shape, dtype, strides, min, max, n_inf, n_nan:", file=ssio)
print(" Expected :", end=" ", file=ssio)
print(expected.shape, end=" ", file=ssio)
print(expected.dtype, end=" ", file=ssio)
print(expected.strides, end=" ", file=ssio)
print(expected.min(), end=" ", file=ssio)
print(expected.max(), end=" ", file=ssio)
print(np.isinf(expected).sum(), end=" ", file=ssio)
print(np.isnan(expected).sum(), end=" ", file=ssio)
# only if all succeeds to we add anything to sio
print(ssio.getvalue(), file=sio)
except Exception:
pass
try:
ssio = StringIO()
print(" Value :", end=" ", file=ssio)
print(value.shape, end=" ", file=ssio)
print(value.dtype, end=" ", file=ssio)
print(value.strides, end=" ", file=ssio)
print(value.min(), end=" ", file=ssio)
print(value.max(), end=" ", file=ssio)
print(np.isinf(value).sum(), end=" ", file=ssio)
print(np.isnan(value).sum(), end=" ", file=ssio)
# only if all succeeds to we add anything to sio
print(ssio.getvalue(), file=sio)
except Exception:
pass
print(" expected :", expected, file=sio)
print(" value :", value, file=sio)
try:
ov = np.asarray(expected)
nv = np.asarray(value)
ssio = StringIO()
absdiff = np.absolute(nv - ov)
print(" Max Abs Diff: ", np.max(absdiff), file=ssio)
print(" Mean Abs Diff: ", np.mean(absdiff), file=ssio)
print(" Median Abs Diff: ", np.median(absdiff), file=ssio)
print(" Std Abs Diff: ", np.std(absdiff), file=ssio)
reldiff = np.absolute(nv - ov) / np.absolute(ov)
print(" Max Rel Diff: ", np.max(reldiff), file=ssio)
print(" Mean Rel Diff: ", np.mean(reldiff), file=ssio)
print(" Median Rel Diff: ", np.median(reldiff), file=ssio)
print(" Std Rel Diff: ", np.std(reldiff), file=ssio)
# only if all succeeds to we add anything to sio
print(ssio.getvalue(), file=sio)
except Exception:
pass
atol_, rtol_ = T.basic._get_atol_rtol(expected, value)
if rtol is not None:
rtol_ = rtol
if atol is not None:
atol_ = atol
print(" rtol, atol:", rtol_, atol_, file=sio)
return sio.getvalue()
class WrongValue(Exception): class WrongValue(Exception):
def __init__(self, expected_val, val, rtol, atol): def __init__(self, expected_val, val, rtol, atol):
Exception.__init__(self) # to be compatible with python2.4 Exception.__init__(self) # to be compatible with python2.4
......
...@@ -165,10 +165,6 @@ from theano.updates import OrderedUpdates ...@@ -165,10 +165,6 @@ from theano.updates import OrderedUpdates
from theano.gradient import Rop, Lop, grad, subgraph_grad from theano.gradient import Rop, Lop, grad, subgraph_grad
# This need to be before the init of GPU, as it add config variable
# needed during that phase.
import tests
if ( if (
config.device.startswith("cuda") config.device.startswith("cuda")
or config.device.startswith("opencl") or config.device.startswith("opencl")
......
...@@ -36,7 +36,7 @@ class PdbBreakpoint(Op): ...@@ -36,7 +36,7 @@ class PdbBreakpoint(Op):
import theano import theano
import theano.tensor as T import theano.tensor as T
from tests.breakpoint import PdbBreakpoint from theano.breakpoint import PdbBreakpoint
input = T.fvector() input = T.fvector()
target = T.fvector() target = T.fvector()
......
...@@ -157,10 +157,7 @@ class BadThunkOutput(DebugModeError): ...@@ -157,10 +157,7 @@ class BadThunkOutput(DebugModeError):
print(" thunk1 :", self.thunk1, file=sio) print(" thunk1 :", self.thunk1, file=sio)
print(" thunk2 :", self.thunk2, file=sio) print(" thunk2 :", self.thunk2, file=sio)
# Don't import it at the top of the file to prevent circular import. print(str_diagnostic(self.val1, self.val2, None, None), file=sio)
import tests.unittest_tools as utt
print(utt.str_diagnostic(self.val1, self.val2, None, None), file=sio)
ret = sio.getvalue() ret = sio.getvalue()
return ret return ret
...@@ -382,6 +379,71 @@ class InvalidValueError(DebugModeError): ...@@ -382,6 +379,71 @@ class InvalidValueError(DebugModeError):
######################## ########################
def str_diagnostic(expected, value, rtol, atol):
"""Return a pretty multiline string representating the cause
of the exception"""
sio = StringIO()
try:
ssio = StringIO()
print(" : shape, dtype, strides, min, max, n_inf, n_nan:", file=ssio)
print(" Expected :", end=" ", file=ssio)
print(expected.shape, end=" ", file=ssio)
print(expected.dtype, end=" ", file=ssio)
print(expected.strides, end=" ", file=ssio)
print(expected.min(), end=" ", file=ssio)
print(expected.max(), end=" ", file=ssio)
print(np.isinf(expected).sum(), end=" ", file=ssio)
print(np.isnan(expected).sum(), end=" ", file=ssio)
# only if all succeeds to we add anything to sio
print(ssio.getvalue(), file=sio)
except Exception:
pass
try:
ssio = StringIO()
print(" Value :", end=" ", file=ssio)
print(value.shape, end=" ", file=ssio)
print(value.dtype, end=" ", file=ssio)
print(value.strides, end=" ", file=ssio)
print(value.min(), end=" ", file=ssio)
print(value.max(), end=" ", file=ssio)
print(np.isinf(value).sum(), end=" ", file=ssio)
print(np.isnan(value).sum(), end=" ", file=ssio)
# only if all succeeds to we add anything to sio
print(ssio.getvalue(), file=sio)
except Exception:
pass
print(" expected :", expected, file=sio)
print(" value :", value, file=sio)
try:
ov = np.asarray(expected)
nv = np.asarray(value)
ssio = StringIO()
absdiff = np.absolute(nv - ov)
print(" Max Abs Diff: ", np.max(absdiff), file=ssio)
print(" Mean Abs Diff: ", np.mean(absdiff), file=ssio)
print(" Median Abs Diff: ", np.median(absdiff), file=ssio)
print(" Std Abs Diff: ", np.std(absdiff), file=ssio)
reldiff = np.absolute(nv - ov) / np.absolute(ov)
print(" Max Rel Diff: ", np.max(reldiff), file=ssio)
print(" Mean Rel Diff: ", np.mean(reldiff), file=ssio)
print(" Median Rel Diff: ", np.median(reldiff), file=ssio)
print(" Std Rel Diff: ", np.std(reldiff), file=ssio)
# only if all succeeds to we add anything to sio
print(ssio.getvalue(), file=sio)
except Exception:
pass
atol_, rtol_ = theano.tensor.basic._get_atol_rtol(expected, value)
if rtol is not None:
rtol_ = rtol
if atol is not None:
atol_ = atol
print(" rtol, atol:", rtol_, atol_, file=sio)
return sio.getvalue()
def char_from_number(number): def char_from_number(number):
""" """
Converts number to string by rendering it in base 26 using Converts number to string by rendering it in base 26 using
......
...@@ -51,7 +51,7 @@ import theano.tensor.signal.pool as pool ...@@ -51,7 +51,7 @@ import theano.tensor.signal.pool as pool
import theano.tensor.slinalg as slinalg import theano.tensor.slinalg as slinalg
from collections import Counter from collections import Counter
from tests.breakpoint import PdbBreakpoint from theano.breakpoint import PdbBreakpoint
from .type import ( from .type import (
GpuArrayType, GpuArrayType,
......
import pytest
pytest.skip(
"You are importing theano.sandbox.cuda. This is the old GPU back-end and "
"is removed from Theano. Use Theano 0.9 to use it. Even better, "
"transition to the new GPU back-end! See "
"https://github.com/Theano/Theano/wiki/Converting-to-the-new-gpu-back-end%28gpuarray%29",
allow_module_level=True,
)
import theano
import numpy as np
import scipy.sparse as sp
from theano import sparse
from theano import gof, tensor, compile
from theano.sparse.basic import (
_is_sparse_variable,
_is_dense_variable,
as_sparse_variable,
_is_sparse,
_mtypes,
_mtype_to_str,
)
from theano.sparse import SparseType, dense_from_sparse, transpose
from tests import unittest_tools as utt
from tests.sparse.test_basic import eval_outputs
from tests.theano.sparse.test_basic import sparse_random_inputs
# To maintain compatibility
from theano.sparse.basic import TrueDot, true_dot
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论