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
-------------------------------------------
You can set a breakpoint during the execution of a Theano function with
:class:`PdbBreakpoint <tests.breakpoint.PdbBreakpoint>`.
:class:`PdbBreakpoint <tests.breakpoint.PdbBreakpoint>` automatically
:class:`PdbBreakpoint <theano.breakpoint.PdbBreakpoint>`.
:class:`PdbBreakpoint <theano.breakpoint.PdbBreakpoint>` automatically
detects available debuggers and uses the first available in the following order:
`pudb`, `ipdb`, or `pdb`.
[flake8]
ignore=E501,E123,E133,FI12,FI14,FI15,FI50,FI51,FI53,W503,W504,E203,C901,E231,E741
per-file-ignores =
theano/sparse/sandbox/truedot.py:F401
theano/sparse/sandbox/sp2.py:F401
tests/sparse/test_basic.py:E402
tests/sparse/test_opt.py:E402
......
......@@ -32,7 +32,7 @@ from theano.gpuarray.subtensor import GpuSubtensor
from tests import unittest_tools as utt
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,
safe_make_node,
TestAlloc,
......
......@@ -9,11 +9,11 @@ from theano.gpuarray.blas import GpuCorrMM, GpuCorrMM_gradWeights, GpuCorrMM_gra
from tests import unittest_tools as utt
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,
TestUnsharedConv,
)
from tests.tensor.nnet.theano.test_abstract_conv import (
from tests.tensor.nnet.test_abstract_conv import (
TestAsymmetricPadding,
TestCausalConv,
)
......
......@@ -9,6 +9,7 @@ import theano.tensor.slinalg as slinalg
from theano import tensor
from theano.gof.opt import check_stack_trace
from theano.tensor.nnet import abstract_conv
from theano.breakpoint import PdbBreakpoint
from theano.gpuarray import basic_ops
from theano.gpuarray.type import GpuArrayType, gpuarray_shared_constructor, get_context
from theano.gpuarray.basic_ops import (
......@@ -34,7 +35,6 @@ from theano.gpuarray.linalg import GpuCusolverSolve, cusolver_available, GpuChol
from tests import unittest_tools as utt, test_ifelse
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
......
......@@ -15,7 +15,7 @@ from tests.gpuarray.config import test_ctx_name
from tests.gpuarray.test_basic_ops import rand_gpuarray
# Disabled for now
# from tests.theano.tensor.test_sharedvar import makeSharedTester
# from tests.tensor.test_sharedvar import makeSharedTester
def test_deep_copy():
......
......@@ -3,8 +3,9 @@ import numpy as np
import theano
import theano.tensor as T
from theano.breakpoint import PdbBreakpoint
from tests import unittest_tools as utt
from tests.breakpoint import PdbBreakpoint
class TestPdbBreakpoint(utt.InferShapeTester):
......
......@@ -12,9 +12,9 @@ from functools import wraps
from copy import copy, deepcopy
from six import integer_types
from six.moves import StringIO
from theano import config
from theano.compile.debugmode import str_diagnostic
_logger = logging.getLogger("tests.unittest_tools")
......@@ -282,71 +282,6 @@ class InferShapeTester:
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):
def __init__(self, expected_val, val, rtol, atol):
Exception.__init__(self) # to be compatible with python2.4
......
......@@ -165,10 +165,6 @@ from theano.updates import OrderedUpdates
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 (
config.device.startswith("cuda")
or config.device.startswith("opencl")
......
......@@ -36,7 +36,7 @@ class PdbBreakpoint(Op):
import theano
import theano.tensor as T
from tests.breakpoint import PdbBreakpoint
from theano.breakpoint import PdbBreakpoint
input = T.fvector()
target = T.fvector()
......
......@@ -157,10 +157,7 @@ class BadThunkOutput(DebugModeError):
print(" thunk1 :", self.thunk1, file=sio)
print(" thunk2 :", self.thunk2, file=sio)
# Don't import it at the top of the file to prevent circular import.
import tests.unittest_tools as utt
print(utt.str_diagnostic(self.val1, self.val2, None, None), file=sio)
print(str_diagnostic(self.val1, self.val2, None, None), file=sio)
ret = sio.getvalue()
return ret
......@@ -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):
"""
Converts number to string by rendering it in base 26 using
......
......@@ -51,7 +51,7 @@ import theano.tensor.signal.pool as pool
import theano.tensor.slinalg as slinalg
from collections import Counter
from tests.breakpoint import PdbBreakpoint
from theano.breakpoint import PdbBreakpoint
from .type import (
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论