Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pytensor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
testgroup
pytensor
Commits
60ad703d
提交
60ad703d
authored
7月 09, 2013
作者:
lamblin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1106 from nouiz/err_msg2
Add utt.assert_allclose that raise a more informative error.
上级
b7294365
96931fd1
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
139 行增加
和
84 行删除
+139
-84
extending_theano.txt
doc/tutorial/extending_theano.txt
+8
-2
debugmode.py
theano/compile/debugmode.py
+9
-53
test_scan.py
theano/scan_module/tests/test_scan.py
+0
-0
test_basic.py
theano/sparse/tests/test_basic.py
+28
-29
basic.py
theano/tensor/basic.py
+2
-0
unittest_tools.py
theano/tests/unittest_tools.py
+92
-0
没有找到文件。
doc/tutorial/extending_theano.txt
浏览文件 @
60ad703d
...
@@ -211,8 +211,14 @@ returns the right answer. If you detect an error, you must raise an
...
@@ -211,8 +211,14 @@ returns the right answer. If you detect an error, you must raise an
inp = numpy.asarray(numpy.random.rand(5, 4), dtype=config.floatX)
inp = numpy.asarray(numpy.random.rand(5, 4), dtype=config.floatX)
out = f(inp)
out = f(inp)
# Compare the result computed to the expected value.
# Compare the result computed to the expected value.
assert numpy.allclose(inp * 2, out)
utt.assert_allclose(inp * 2, out)
We call ``utt.assert_allclose(expected_value, value)`` to compare
NumPy ndarray.This raise an error message with more information. Also,
the default tolerance can be changed with the Theano flags
``config.tensor.cmp_sloppy`` that take values in 0, 1 and 2. The
defaul value do the most strict comparison, 1 and 2 make less strict
comparison.
Testing the infer_shape
Testing the infer_shape
-----------------------
-----------------------
...
...
theano/compile/debugmode.py
浏览文件 @
60ad703d
...
@@ -171,7 +171,8 @@ class BadThunkOutput(DebugModeError):
...
@@ -171,7 +171,8 @@ class BadThunkOutput(DebugModeError):
of the exception"""
of the exception"""
sio
=
StringIO
()
sio
=
StringIO
()
print
>>
sio
,
"BadThunkOutput"
print
>>
sio
,
"BadThunkOutput"
print
>>
sio
,
" variable :"
,
self
.
r
print
>>
sio
,
" Apply :"
,
self
.
r
.
owner
print
>>
sio
,
" op :"
,
self
.
offending_op
()
print
>>
sio
,
" Outputs Type:"
,
self
.
r
.
type
print
>>
sio
,
" Outputs Type:"
,
self
.
r
.
type
print
>>
sio
,
" Outputs Shape:"
,
getattr
(
self
.
val1
,
'shape'
,
None
)
print
>>
sio
,
" Outputs Shape:"
,
getattr
(
self
.
val1
,
'shape'
,
None
)
print
>>
sio
,
" Outputs Strides:"
,
getattr
(
self
.
val1
,
'strides'
,
None
)
print
>>
sio
,
" Outputs Strides:"
,
getattr
(
self
.
val1
,
'strides'
,
None
)
...
@@ -180,60 +181,15 @@ class BadThunkOutput(DebugModeError):
...
@@ -180,60 +181,15 @@ class BadThunkOutput(DebugModeError):
for
val
in
self
.
inputs_val
]
for
val
in
self
.
inputs_val
]
print
>>
sio
,
" Inputs Strides:"
,
[
getattr
(
val
,
'strides'
,
None
)
print
>>
sio
,
" Inputs Strides:"
,
[
getattr
(
val
,
'strides'
,
None
)
for
val
in
self
.
inputs_val
]
for
val
in
self
.
inputs_val
]
print
>>
sio
,
"
Apply :"
,
self
.
r
.
owne
r
print
>>
sio
,
"
Bad Variable:"
,
self
.
r
print
>>
sio
,
" thunk1 :"
,
self
.
thunk1
print
>>
sio
,
" thunk1 :"
,
self
.
thunk1
print
>>
sio
,
" thunk2 :"
,
self
.
thunk2
print
>>
sio
,
" thunk2 :"
,
self
.
thunk2
print
>>
sio
,
" val1 :"
,
self
.
val1
print
>>
sio
,
" val2 :"
,
self
.
val2
#Don't import it at the top of the file to prevent circular import.
print
>>
sio
,
" op :"
,
self
.
offending_op
()
utt
=
theano
.
tests
.
unittest_tools
try
:
print
>>
sio
,
utt
.
str_diagnostic
(
self
.
val1
,
self
.
val2
,
None
,
None
)
ssio
=
StringIO
()
ret
=
sio
.
getvalue
()
print
>>
ssio
,
" Value 1 : shape, dtype, strides, min, max, n_inf, n_nan:"
,
return
ret
print
>>
ssio
,
self
.
val1
.
shape
,
print
>>
ssio
,
self
.
val1
.
dtype
,
print
>>
ssio
,
self
.
val1
.
strides
,
print
>>
ssio
,
self
.
val1
.
min
(),
print
>>
ssio
,
self
.
val1
.
max
(),
print
>>
ssio
,
numpy
.
isinf
(
self
.
val1
)
.
sum
(),
print
>>
ssio
,
numpy
.
isnan
(
self
.
val1
)
.
sum
(),
# only if all succeeds to we add anything to sio
print
>>
sio
,
ssio
.
getvalue
()
except
Exception
:
pass
try
:
ssio
=
StringIO
()
print
>>
ssio
,
" Value 2 : shape, dtype, strides, min, max, n_inf, n_nan:"
,
print
>>
ssio
,
self
.
val2
.
shape
,
print
>>
ssio
,
self
.
val2
.
dtype
,
print
>>
ssio
,
self
.
val2
.
strides
,
print
>>
ssio
,
self
.
val2
.
min
(),
print
>>
ssio
,
self
.
val2
.
max
(),
print
>>
ssio
,
numpy
.
isinf
(
self
.
val2
)
.
sum
(),
print
>>
ssio
,
numpy
.
isnan
(
self
.
val2
)
.
sum
(),
# only if all succeeds to we add anything to sio
print
>>
sio
,
ssio
.
getvalue
()
except
Exception
:
pass
try
:
ov
=
numpy
.
asarray
(
self
.
val1
)
nv
=
numpy
.
asarray
(
self
.
val2
)
ssio
=
StringIO
()
absdiff
=
numpy
.
absolute
(
nv
-
ov
)
print
>>
ssio
,
" Max Abs Diff: "
,
numpy
.
max
(
absdiff
)
print
>>
ssio
,
" Mean Abs Diff: "
,
numpy
.
mean
(
absdiff
)
print
>>
ssio
,
" Median Abs Diff: "
,
numpy
.
median
(
absdiff
)
print
>>
ssio
,
" Std Abs Diff: "
,
numpy
.
std
(
absdiff
)
reldiff
=
numpy
.
absolute
(
nv
-
ov
)
/
(
numpy
.
absolute
(
nv
)
+
numpy
.
absolute
(
ov
))
print
>>
ssio
,
" Max Rel Diff: "
,
numpy
.
max
(
reldiff
)
print
>>
ssio
,
" Mean Rel Diff: "
,
numpy
.
mean
(
reldiff
)
print
>>
ssio
,
" Median Rel Diff: "
,
numpy
.
median
(
reldiff
)
print
>>
ssio
,
" Std Rel Diff: "
,
numpy
.
std
(
reldiff
)
# only if all succeeds to we add anything to sio
print
>>
sio
,
ssio
.
getvalue
()
except
Exception
:
pass
return
sio
.
getvalue
()
class
BadOptimization
(
DebugModeError
):
class
BadOptimization
(
DebugModeError
):
...
...
theano/scan_module/tests/test_scan.py
浏览文件 @
60ad703d
差异被折叠。
点击展开。
theano/sparse/tests/test_basic.py
浏览文件 @
60ad703d
...
@@ -48,7 +48,6 @@ from theano.sparse import (
...
@@ -48,7 +48,6 @@ from theano.sparse import (
from
theano.sparse.opt
import
(
StructuredDotCSC
,
UsmmCscDense
,
CSMGradC
)
from
theano.sparse.opt
import
(
StructuredDotCSC
,
UsmmCscDense
,
CSMGradC
)
from
theano.tests
import
unittest_tools
as
utt
from
theano.tests
import
unittest_tools
as
utt
from
theano.tensor.basic
import
_allclose
def
as_sparse_format
(
data
,
format
):
def
as_sparse_format
(
data
,
format
):
...
@@ -886,7 +885,7 @@ class test_structureddot(unittest.TestCase):
...
@@ -886,7 +885,7 @@ class test_structureddot(unittest.TestCase):
scipy_result
=
spmat
*
mat
scipy_result
=
spmat
*
mat
assert
theano_result
.
shape
==
scipy_result
.
shape
assert
theano_result
.
shape
==
scipy_result
.
shape
assert
theano_result
.
dtype
==
scipy_result
.
dtype
assert
theano_result
.
dtype
==
scipy_result
.
dtype
assert
_allclose
(
theano_result
,
scipy
_result
)
utt
.
assert_allclose
(
scipy_result
,
theano
_result
)
def
test_opt_unpack
(
self
):
def
test_opt_unpack
(
self
):
#
#
...
@@ -999,7 +998,7 @@ class test_structureddot(unittest.TestCase):
...
@@ -999,7 +998,7 @@ class test_structureddot(unittest.TestCase):
# fail if Theano is slower than scipy by more than a certain amount
# fail if Theano is slower than scipy by more than a certain amount
overhead_tol
=
0.003
# seconds overall
overhead_tol
=
0.003
# seconds overall
overhead_rtol
=
1.2
# times as long
overhead_rtol
=
1.2
# times as long
self
.
assertTrue
(
numpy
.
allclose
(
theano_result
,
scipy_result
)
)
utt
.
assert_allclose
(
scipy_result
,
theano_result
)
if
not
theano
.
config
.
mode
in
[
"DebugMode"
,
"DEBUG_MODE"
]:
if
not
theano
.
config
.
mode
in
[
"DebugMode"
,
"DEBUG_MODE"
]:
self
.
assertFalse
(
theano_time
>
overhead_rtol
*
scipy_time
+
self
.
assertFalse
(
theano_time
>
overhead_rtol
*
scipy_time
+
overhead_tol
)
overhead_tol
)
...
@@ -1035,7 +1034,7 @@ class test_structureddot(unittest.TestCase):
...
@@ -1035,7 +1034,7 @@ class test_structureddot(unittest.TestCase):
# print 'scipy took', scipy_time
# print 'scipy took', scipy_time
overhead_tol
=
0.002
# seconds
overhead_tol
=
0.002
# seconds
overhead_rtol
=
1.1
# times as long
overhead_rtol
=
1.1
# times as long
self
.
assertTrue
(
numpy
.
allclose
(
theano_result
,
scipy_result
)
)
utt
.
assert_allclose
(
scipy_result
,
theano_result
)
if
(
not
theano
.
config
.
mode
in
[
"DebugMode"
,
"DEBUG_MODE"
]
and
if
(
not
theano
.
config
.
mode
in
[
"DebugMode"
,
"DEBUG_MODE"
]
and
theano
.
config
.
cxx
):
theano
.
config
.
cxx
):
self
.
assertFalse
(
theano_time
>
overhead_rtol
*
scipy_time
+
self
.
assertFalse
(
theano_time
>
overhead_rtol
*
scipy_time
+
...
@@ -1075,7 +1074,7 @@ class DotTests(utt.InferShapeTester):
...
@@ -1075,7 +1074,7 @@ class DotTests(utt.InferShapeTester):
f_a
=
theano
.
function
([
x
,
y
],
theano
.
sparse
.
dot
(
x
,
y
))
f_a
=
theano
.
function
([
x
,
y
],
theano
.
sparse
.
dot
(
x
,
y
))
f_b
=
lambda
x
,
y
:
x
*
y
f_b
=
lambda
x
,
y
:
x
*
y
assert
_allclose
(
f_a
(
x_v
,
y_v
),
f_b
(
x_v
,
y_v
))
utt
.
assert
_allclose
(
f_a
(
x_v
,
y_v
),
f_b
(
x_v
,
y_v
))
# Test infer_shape
# Test infer_shape
self
.
_compile_and_check
([
x
,
y
],
[
theano
.
sparse
.
dot
(
x
,
y
)],
self
.
_compile_and_check
([
x
,
y
],
[
theano
.
sparse
.
dot
(
x
,
y
)],
...
@@ -1094,7 +1093,7 @@ class DotTests(utt.InferShapeTester):
...
@@ -1094,7 +1093,7 @@ class DotTests(utt.InferShapeTester):
f_a
=
theano
.
function
([
x
,
y
],
theano
.
sparse
.
dot
(
x
,
y
))
f_a
=
theano
.
function
([
x
,
y
],
theano
.
sparse
.
dot
(
x
,
y
))
f_b
=
lambda
x
,
y
:
x
*
y
f_b
=
lambda
x
,
y
:
x
*
y
assert
_allclose
(
f_a
(
x_v
,
y_v
),
f_b
(
x_v
,
y_v
))
utt
.
assert
_allclose
(
f_a
(
x_v
,
y_v
),
f_b
(
x_v
,
y_v
))
# Test infer_shape
# Test infer_shape
self
.
_compile_and_check
([
x
,
y
],
[
theano
.
sparse
.
dot
(
x
,
y
)],
self
.
_compile_and_check
([
x
,
y
],
[
theano
.
sparse
.
dot
(
x
,
y
)],
...
@@ -1117,12 +1116,12 @@ class DotTests(utt.InferShapeTester):
...
@@ -1117,12 +1116,12 @@ class DotTests(utt.InferShapeTester):
x
=
theano
.
sparse
.
SparseType
(
format
=
x_f
,
dtype
=
d1
)(
'x'
)
x
=
theano
.
sparse
.
SparseType
(
format
=
x_f
,
dtype
=
d1
)(
'x'
)
y
=
theano
.
sparse
.
SparseType
(
format
=
x_f
,
dtype
=
d2
)(
'x'
)
y
=
theano
.
sparse
.
SparseType
(
format
=
x_f
,
dtype
=
d2
)(
'x'
)
f_a
=
theano
.
function
([
x
,
y
],
theano
.
sparse
.
dot
(
x
,
y
))
f_a
=
lambda
x
,
y
:
x
*
y
f_b
=
lambda
x
,
y
:
x
*
y
f_b
=
theano
.
function
([
x
,
y
],
theano
.
sparse
.
dot
(
x
,
y
))
vx
=
getattr
(
self
,
'x_'
+
x_f
)
.
astype
(
d1
)
vx
=
getattr
(
self
,
'x_'
+
x_f
)
.
astype
(
d1
)
vy
=
getattr
(
self
,
'y_'
+
y_f
)
.
astype
(
d2
)
vy
=
getattr
(
self
,
'y_'
+
y_f
)
.
astype
(
d2
)
assert
_allclose
(
f_a
(
vx
,
vy
),
f_b
(
vx
,
vy
)
.
toarray
(
))
utt
.
assert_allclose
(
f_a
(
vx
,
vy
)
.
toarray
(),
f_b
(
vx
,
vy
))
# Test infer_shape
# Test infer_shape
f_a
=
theano
.
function
([
x
,
y
],
theano
.
sparse
.
dot
(
x
,
y
)
.
shape
)
f_a
=
theano
.
function
([
x
,
y
],
theano
.
sparse
.
dot
(
x
,
y
)
.
shape
)
...
@@ -1150,7 +1149,7 @@ class DotTests(utt.InferShapeTester):
...
@@ -1150,7 +1149,7 @@ class DotTests(utt.InferShapeTester):
a_val
=
scipy
.
sparse
.
csr_matrix
(
random_lil
((
5
,
3
),
'float32'
,
5
))
a_val
=
scipy
.
sparse
.
csr_matrix
(
random_lil
((
5
,
3
),
'float32'
,
5
))
d_theano
=
f
(
a_val
)
d_theano
=
f
(
a_val
)
d_numpy
=
a_val
*
b
.
get_value
()
d_numpy
=
a_val
*
b
.
get_value
()
assert
numpy
.
allclose
(
d_theano
,
d_numpy
)
utt
.
assert_allclose
(
d_numpy
,
d_theano
)
def
test_int32_dtype
(
self
):
def
test_int32_dtype
(
self
):
# Reported on the theano-user mailing-list:
# Reported on the theano-user mailing-list:
...
@@ -1256,7 +1255,7 @@ class UsmmTests(unittest.TestCase):
...
@@ -1256,7 +1255,7 @@ class UsmmTests(unittest.TestCase):
theano
.
tensor
.
basic
.
float64_atol
=
orig_atol
theano
.
tensor
.
basic
.
float64_atol
=
orig_atol
theano
.
tensor
.
basic
.
float64_rtol
=
orig_rtol
theano
.
tensor
.
basic
.
float64_rtol
=
orig_rtol
assert
_allclose
(
f_a_out
,
f_b_out
,
rtol
=
1e-5
),
(
f_a_out
,
f_b_out
)
utt
.
assert_allclose
(
f_a_out
,
f_b_out
,
rtol
=
1e-5
)
topo
=
f_a
.
maker
.
fgraph
.
toposort
()
topo
=
f_a
.
maker
.
fgraph
.
toposort
()
up
=
theano
.
scalar
.
upcast
(
dtype1
,
dtype2
,
dtype3
,
dtype4
)
up
=
theano
.
scalar
.
upcast
(
dtype1
,
dtype2
,
dtype3
,
dtype4
)
...
@@ -1492,7 +1491,7 @@ class ColScaleCSCTester(utt.InferShapeTester):
...
@@ -1492,7 +1491,7 @@ class ColScaleCSCTester(utt.InferShapeTester):
expected
=
x
*
s
expected
=
x
*
s
assert
tested
.
format
==
format
assert
tested
.
format
==
format
assert
numpy
.
allclose
(
tested
.
toarray
(),
expected
)
utt
.
assert_allclose
(
expected
,
tested
.
toarray
()
)
def
test_infer_shape
(
self
):
def
test_infer_shape
(
self
):
for
format
,
cls
in
[(
'csc'
,
sparse
.
ColScaleCSC
),
for
format
,
cls
in
[(
'csc'
,
sparse
.
ColScaleCSC
),
...
@@ -1533,7 +1532,7 @@ class RowScaleCSCTester(utt.InferShapeTester):
...
@@ -1533,7 +1532,7 @@ class RowScaleCSCTester(utt.InferShapeTester):
expected
=
x
*
s
expected
=
x
*
s
assert
tested
.
format
==
format
assert
tested
.
format
==
format
assert
numpy
.
allclose
(
tested
.
toarray
(),
expected
)
utt
.
assert_allclose
(
expected
,
tested
.
toarray
()
)
def
test_infer_shape
(
self
):
def
test_infer_shape
(
self
):
for
format
,
cls
in
[(
'csc'
,
sparse
.
RowScaleCSC
),
for
format
,
cls
in
[(
'csc'
,
sparse
.
RowScaleCSC
),
...
@@ -1579,7 +1578,7 @@ class SpSumTester(utt.InferShapeTester):
...
@@ -1579,7 +1578,7 @@ class SpSumTester(utt.InferShapeTester):
f
=
theano
.
function
(
variable
,
self
.
op
(
variable
[
0
],
axis
=
axis
))
f
=
theano
.
function
(
variable
,
self
.
op
(
variable
[
0
],
axis
=
axis
))
tested
=
f
(
*
data
)
tested
=
f
(
*
data
)
expected
=
data
[
0
]
.
todense
()
.
sum
(
axis
)
.
ravel
()
expected
=
data
[
0
]
.
todense
()
.
sum
(
axis
)
.
ravel
()
assert
numpy
.
allclose
(
tested
,
expec
ted
)
utt
.
assert_allclose
(
expected
,
tes
ted
)
def
test_infer_shape
(
self
):
def
test_infer_shape
(
self
):
for
format
in
sparse
.
sparse_formats
:
for
format
in
sparse
.
sparse_formats
:
...
@@ -1621,7 +1620,7 @@ class DiagTester(utt.InferShapeTester):
...
@@ -1621,7 +1620,7 @@ class DiagTester(utt.InferShapeTester):
tested
=
f
(
*
data
)
tested
=
f
(
*
data
)
expected
=
data
[
0
]
.
toarray
()
.
diagonal
()
expected
=
data
[
0
]
.
toarray
()
.
diagonal
()
assert
numpy
.
allclose
(
tested
,
expec
ted
)
utt
.
assert_allclose
(
expected
,
tes
ted
)
def
test_infer_shape
(
self
):
def
test_infer_shape
(
self
):
for
format
in
sparse
.
sparse_formats
:
for
format
in
sparse
.
sparse_formats
:
...
@@ -1659,7 +1658,7 @@ class SquareDiagonalTester(utt.InferShapeTester):
...
@@ -1659,7 +1658,7 @@ class SquareDiagonalTester(utt.InferShapeTester):
tested
=
f
(
*
data
)
.
toarray
()
tested
=
f
(
*
data
)
.
toarray
()
expected
=
numpy
.
diag
(
*
data
)
expected
=
numpy
.
diag
(
*
data
)
assert
numpy
.
allclose
(
tested
,
expec
ted
)
utt
.
assert_allclose
(
expected
,
tes
ted
)
assert
tested
.
dtype
==
expected
.
dtype
assert
tested
.
dtype
==
expected
.
dtype
assert
tested
.
shape
==
expected
.
shape
assert
tested
.
shape
==
expected
.
shape
...
@@ -1701,7 +1700,7 @@ class EnsureSortedIndicesTester(utt.InferShapeTester):
...
@@ -1701,7 +1700,7 @@ class EnsureSortedIndicesTester(utt.InferShapeTester):
tested
=
f
(
*
data
)
.
toarray
()
tested
=
f
(
*
data
)
.
toarray
()
expected
=
data
[
0
]
.
sorted_indices
()
.
toarray
()
expected
=
data
[
0
]
.
sorted_indices
()
.
toarray
()
assert
numpy
.
allclose
(
tested
,
expec
ted
)
utt
.
assert_allclose
(
expected
,
tes
ted
)
def
test_infer_shape
(
self
):
def
test_infer_shape
(
self
):
for
format
in
sparse
.
sparse_formats
:
for
format
in
sparse
.
sparse_formats
:
...
@@ -1744,7 +1743,7 @@ class CleanTester(utt.InferShapeTester):
...
@@ -1744,7 +1743,7 @@ class CleanTester(utt.InferShapeTester):
tested
=
tested
.
toarray
()
tested
=
tested
.
toarray
()
expected
=
expected
.
toarray
()
expected
=
expected
.
toarray
()
assert
numpy
.
allclose
(
tested
,
expec
ted
)
utt
.
assert_allclose
(
expected
,
tes
ted
)
def
test_grad
(
self
):
def
test_grad
(
self
):
for
format
in
sparse
.
sparse_formats
:
for
format
in
sparse
.
sparse_formats
:
...
@@ -2048,9 +2047,9 @@ class CastTester(utt.InferShapeTester):
...
@@ -2048,9 +2047,9 @@ class CastTester(utt.InferShapeTester):
t_cls
=
t_cls
.
toarray
()
t_cls
=
t_cls
.
toarray
()
t_prop
=
t_prop
.
toarray
()
t_prop
=
t_prop
.
toarray
()
assert
numpy
.
allclose
(
t_func
,
expected
)
utt
.
assert_allclose
(
expected
,
t_func
)
assert
numpy
.
allclose
(
t_cls
,
expected
)
utt
.
assert_allclose
(
expected
,
t_cls
)
assert
numpy
.
allclose
(
t_prop
,
expected
)
utt
.
assert_allclose
(
expected
,
t_prop
)
def
test_infer_shape
(
self
):
def
test_infer_shape
(
self
):
for
format
in
sparse
.
sparse_formats
:
for
format
in
sparse
.
sparse_formats
:
...
@@ -2120,7 +2119,7 @@ class _HVStackTester(utt.InferShapeTester):
...
@@ -2120,7 +2119,7 @@ class _HVStackTester(utt.InferShapeTester):
format
=
out_f
,
format
=
out_f
,
dtype
=
dtype
)
dtype
=
dtype
)
assert
numpy
.
allclose
(
tested
.
toarray
(),
expec
ted
.
toarray
())
utt
.
assert_allclose
(
expected
.
toarray
(),
tes
ted
.
toarray
())
assert
tested
.
format
==
expected
.
format
assert
tested
.
format
==
expected
.
format
assert
tested
.
dtype
==
expected
.
dtype
assert
tested
.
dtype
==
expected
.
dtype
...
@@ -2191,7 +2190,7 @@ class AddSSDataTester(utt.InferShapeTester):
...
@@ -2191,7 +2190,7 @@ class AddSSDataTester(utt.InferShapeTester):
tested
=
f
(
*
self
.
a
[
format
])
tested
=
f
(
*
self
.
a
[
format
])
expected
=
2
*
self
.
a
[
format
][
0
]
expected
=
2
*
self
.
a
[
format
][
0
]
assert
numpy
.
allclose
(
tested
.
toarray
(),
expec
ted
.
toarray
())
utt
.
assert_allclose
(
expected
.
toarray
(),
tes
ted
.
toarray
())
assert
tested
.
format
==
expected
.
format
assert
tested
.
format
==
expected
.
format
assert
tested
.
dtype
==
expected
.
dtype
assert
tested
.
dtype
==
expected
.
dtype
...
@@ -2286,7 +2285,7 @@ def elemwise_checker(op, expected_f, gap=None, test_dtypes=None,
...
@@ -2286,7 +2285,7 @@ def elemwise_checker(op, expected_f, gap=None, test_dtypes=None,
tested
=
tested
.
toarray
()
tested
=
tested
.
toarray
()
try
:
try
:
assert
numpy
.
allclose
(
tested
,
expec
ted
)
utt
.
assert_allclose
(
expected
,
tes
ted
)
except
AssertionError
:
except
AssertionError
:
raise
AssertionError
(
self
.
__name__
)
raise
AssertionError
(
self
.
__name__
)
...
@@ -2348,7 +2347,7 @@ def elemwise_checker(op, expected_f, gap=None, test_dtypes=None,
...
@@ -2348,7 +2347,7 @@ def elemwise_checker(op, expected_f, gap=None, test_dtypes=None,
tested
=
tested
.
toarray
()
tested
=
tested
.
toarray
()
try
:
try
:
assert
numpy
.
allclose
(
tested
,
expected
,
rtol
=
1e-2
)
utt
.
assert_
allclose
(
tested
,
expected
,
rtol
=
1e-2
)
except
AssertionError
:
except
AssertionError
:
raise
AssertionError
(
self
.
__name__
)
raise
AssertionError
(
self
.
__name__
)
...
@@ -2578,7 +2577,7 @@ class MulSVTester(unittest.TestCase):
...
@@ -2578,7 +2577,7 @@ class MulSVTester(unittest.TestCase):
out
=
f
(
spmat
,
mat
)
out
=
f
(
spmat
,
mat
)
assert
numpy
.
allclose
(
out
.
toarray
(),
spmat
.
toarray
()
*
mat
)
utt
.
assert_allclose
(
spmat
.
toarray
()
*
mat
,
out
.
toarray
()
)
class
StructuredAddSVTester
(
unittest
.
TestCase
):
class
StructuredAddSVTester
(
unittest
.
TestCase
):
...
@@ -2615,8 +2614,8 @@ class StructuredAddSVTester(unittest.TestCase):
...
@@ -2615,8 +2614,8 @@ class StructuredAddSVTester(unittest.TestCase):
out
=
f
(
spmat
,
mat
)
out
=
f
(
spmat
,
mat
)
assert
numpy
.
allclose
(
out
.
toarray
(
),
utt
.
assert_allclose
(
spones
.
multiply
(
spmat
+
mat
),
spones
.
multiply
(
spmat
+
mat
))
out
.
toarray
(
))
class
SamplingDotTester
(
utt
.
InferShapeTester
):
class
SamplingDotTester
(
utt
.
InferShapeTester
):
...
@@ -2645,7 +2644,7 @@ class SamplingDotTester(utt.InferShapeTester):
...
@@ -2645,7 +2644,7 @@ class SamplingDotTester(utt.InferShapeTester):
x
,
y
,
p
=
self
.
a
x
,
y
,
p
=
self
.
a
expected
=
p
.
multiply
(
numpy
.
dot
(
x
,
y
.
T
))
expected
=
p
.
multiply
(
numpy
.
dot
(
x
,
y
.
T
))
assert
numpy
.
allclose
(
tested
.
toarray
(),
expected
)
utt
.
assert_allclose
(
expected
,
tested
.
toarray
()
)
assert
tested
.
format
==
'csr'
assert
tested
.
format
==
'csr'
assert
tested
.
dtype
==
expected
.
dtype
assert
tested
.
dtype
==
expected
.
dtype
...
...
theano/tensor/basic.py
浏览文件 @
60ad703d
...
@@ -474,6 +474,8 @@ else:
...
@@ -474,6 +474,8 @@ else:
def
_allclose
(
a
,
b
,
rtol
=
None
,
atol
=
None
):
def
_allclose
(
a
,
b
,
rtol
=
None
,
atol
=
None
):
a
=
numpy
.
asarray
(
a
)
b
=
numpy
.
asarray
(
b
)
narrow
=
'float32'
,
'complex64'
narrow
=
'float32'
,
'complex64'
if
(
str
(
a
.
dtype
)
in
narrow
)
or
(
str
(
b
.
dtype
)
in
narrow
):
if
(
str
(
a
.
dtype
)
in
narrow
)
or
(
str
(
b
.
dtype
)
in
narrow
):
atol_
=
float32_atol
atol_
=
float32_atol
...
...
theano/tests/unittest_tools.py
浏览文件 @
60ad703d
from
copy
import
copy
,
deepcopy
from
copy
import
copy
,
deepcopy
import
logging
import
logging
from
StringIO
import
StringIO
import
sys
import
sys
import
unittest
import
unittest
...
@@ -239,3 +240,94 @@ class InferShapeTester(unittest.TestCase):
...
@@ -239,3 +240,94 @@ class InferShapeTester(unittest.TestCase):
numeric_shapes
=
shapes_function
(
*
numeric_inputs
)
numeric_shapes
=
shapes_function
(
*
numeric_inputs
)
for
out
,
shape
in
zip
(
numeric_outputs
,
numeric_shapes
):
for
out
,
shape
in
zip
(
numeric_outputs
,
numeric_shapes
):
assert
numpy
.
all
(
out
.
shape
==
shape
)
assert
numpy
.
all
(
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
>>
ssio
,
" : shape, dtype, strides, min, max, n_inf, n_nan:"
print
>>
ssio
,
" Expected :"
,
print
>>
ssio
,
expected
.
shape
,
print
>>
ssio
,
expected
.
dtype
,
print
>>
ssio
,
expected
.
strides
,
print
>>
ssio
,
expected
.
min
(),
print
>>
ssio
,
expected
.
max
(),
print
>>
ssio
,
numpy
.
isinf
(
expected
)
.
sum
(),
print
>>
ssio
,
numpy
.
isnan
(
expected
)
.
sum
(),
# only if all succeeds to we add anything to sio
print
>>
sio
,
ssio
.
getvalue
()
except
Exception
:
pass
try
:
ssio
=
StringIO
()
print
>>
ssio
,
" Value :"
,
print
>>
ssio
,
value
.
shape
,
print
>>
ssio
,
value
.
dtype
,
print
>>
ssio
,
value
.
strides
,
print
>>
ssio
,
value
.
min
(),
print
>>
ssio
,
value
.
max
(),
print
>>
ssio
,
numpy
.
isinf
(
value
)
.
sum
(),
print
>>
ssio
,
numpy
.
isnan
(
value
)
.
sum
(),
# only if all succeeds to we add anything to sio
print
>>
sio
,
ssio
.
getvalue
()
except
Exception
:
pass
print
>>
sio
,
" expected :"
,
expected
print
>>
sio
,
" value :"
,
value
try
:
ov
=
numpy
.
asarray
(
expected
)
nv
=
numpy
.
asarray
(
value
)
ssio
=
StringIO
()
absdiff
=
numpy
.
absolute
(
nv
-
ov
)
print
>>
ssio
,
" Max Abs Diff: "
,
numpy
.
max
(
absdiff
)
print
>>
ssio
,
" Mean Abs Diff: "
,
numpy
.
mean
(
absdiff
)
print
>>
ssio
,
" Median Abs Diff: "
,
numpy
.
median
(
absdiff
)
print
>>
ssio
,
" Std Abs Diff: "
,
numpy
.
std
(
absdiff
)
reldiff
=
numpy
.
absolute
(
nv
-
ov
)
/
(
numpy
.
absolute
(
nv
)
+
numpy
.
absolute
(
ov
))
print
>>
ssio
,
" Max Rel Diff: "
,
numpy
.
max
(
reldiff
)
print
>>
ssio
,
" Mean Rel Diff: "
,
numpy
.
mean
(
reldiff
)
print
>>
ssio
,
" Median Rel Diff: "
,
numpy
.
median
(
reldiff
)
print
>>
ssio
,
" Std Rel Diff: "
,
numpy
.
std
(
reldiff
)
# only if all succeeds to we add anything to sio
print
>>
sio
,
ssio
.
getvalue
()
except
Exception
:
pass
#Use the same formula as in _allclose to find the tolerance used
narrow
=
'float32'
,
'complex64'
if
((
str
(
expected
.
dtype
)
in
narrow
)
or
(
str
(
value
.
dtype
)
in
narrow
)):
atol_
=
T
.
basic
.
float32_atol
rtol_
=
T
.
basic
.
float32_rtol
else
:
atol_
=
T
.
basic
.
float64_atol
rtol_
=
T
.
basic
.
float64_rtol
if
rtol
is
not
None
:
rtol_
=
rtol
if
atol
is
not
None
:
atol_
=
atol
print
>>
sio
,
" rtol, atol:"
,
rtol_
,
atol_
return
sio
.
getvalue
()
class
WrongValue
(
Exception
):
def
__init__
(
self
,
expected_val
,
val
,
rtol
,
atol
):
self
.
val1
=
expected_val
self
.
val2
=
val
self
.
rtol
=
rtol
self
.
atol
=
atol
def
__str__
(
self
):
s
=
"WrongValue
\n
"
return
s
+
str_diagnostic
(
self
.
val1
,
self
.
val2
,
self
.
rtol
,
self
.
atol
)
def
assert_allclose
(
val1
,
val2
,
rtol
=
None
,
atol
=
None
):
if
not
T
.
basic
.
_allclose
(
val1
,
val2
,
rtol
,
atol
):
raise
WrongValue
(
val1
,
val2
,
rtol
,
atol
)
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论