Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pytensor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
testgroup
pytensor
Commits
3089deda
提交
3089deda
authored
3月 28, 2015
作者:
Bart van Merrienboer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix E261: at least two spaces before inline comment
上级
b34bc31d
全部展开
显示空白字符变更
内嵌
并排
正在显示
47 个修改的文件
包含
132 行增加
和
132 行删除
+132
-132
python2x.py
theano/compat/python2x.py
+0
-0
debugmode.py
theano/compile/debugmode.py
+4
-4
function_module.py
theano/compile/function_module.py
+0
-0
profilemode.py
theano/compile/profilemode.py
+1
-1
test_function_module.py
theano/compile/tests/test_function_module.py
+31
-31
callcache.py
theano/gof/callcache.py
+1
-1
destroyhandler.py
theano/gof/destroyhandler.py
+2
-2
fg.py
theano/gof/fg.py
+1
-1
link.py
theano/gof/link.py
+1
-1
test_graph.py
theano/gof/tests/test_graph.py
+0
-0
test_opt.py
theano/gof/tests/test_opt.py
+0
-0
type.py
theano/gof/type.py
+2
-2
unify.py
theano/gof/unify.py
+0
-0
check_duplicate_key.py
theano/misc/check_duplicate_key.py
+1
-1
cudamat_utils.py
theano/misc/cudamat_utils.py
+0
-0
gnumpy_utils.py
theano/misc/gnumpy_utils.py
+0
-0
check_whitespace.py
theano/misc/hooks/check_whitespace.py
+0
-0
pycuda_utils.py
theano/misc/pycuda_utils.py
+0
-0
basic_ops.py
theano/sandbox/cuda/basic_ops.py
+1
-1
elemwise.py
theano/sandbox/cuda/elemwise.py
+5
-5
test_basic_ops.py
theano/sandbox/cuda/tests/test_basic_ops.py
+0
-0
test_bench_loopfusion.py
theano/sandbox/cuda/tests/test_bench_loopfusion.py
+2
-2
test_conv_cuda_ndarray.py
theano/sandbox/cuda/tests/test_conv_cuda_ndarray.py
+0
-0
var.py
theano/sandbox/cuda/var.py
+1
-1
debug.py
theano/sandbox/debug.py
+0
-0
basic_ops.py
theano/sandbox/gpuarray/basic_ops.py
+1
-1
elemwise.py
theano/sandbox/gpuarray/elemwise.py
+0
-0
test_conv_cuda_ndarray.py
theano/sandbox/gpuarray/tests/test_conv_cuda_ndarray.py
+0
-0
test_elemwise.py
theano/sandbox/gpuarray/tests/test_elemwise.py
+27
-27
ops.py
theano/sandbox/linalg/ops.py
+0
-0
symbolic_module.py
theano/sandbox/symbolic_module.py
+5
-5
test_theano_object.py
theano/sandbox/test_theano_object.py
+7
-7
basic.py
theano/scalar/basic.py
+0
-0
scan_op.py
theano/scan_module/scan_op.py
+0
-0
scan_opt.py
theano/scan_module/scan_opt.py
+0
-0
test_sp.py
theano/sparse/sandbox/test_sp.py
+1
-1
elemwise_cgen.py
theano/tensor/elemwise_cgen.py
+0
-0
speed_test_conv.py
theano/tensor/nnet/tests/speed_test_conv.py
+11
-11
test_nnet.py
theano/tensor/nnet/tests/test_nnet.py
+0
-0
test_downsample.py
theano/tensor/signal/tests/test_downsample.py
+0
-0
mlp_test.py
theano/tensor/tests/mlp_test.py
+0
-0
test_blas_scipy.py
theano/tensor/tests/test_blas_scipy.py
+3
-3
test_mpi.py
theano/tensor/tests/test_mpi.py
+0
-0
test_opt.py
theano/tensor/tests/test_opt.py
+7
-7
test_shared_randomstreams.py
theano/tensor/tests/test_shared_randomstreams.py
+9
-9
test_sharedvar.py
theano/tensor/tests/test_sharedvar.py
+7
-7
test_tutorial.py
theano/tests/test_tutorial.py
+1
-1
没有找到文件。
theano/compat/python2x.py
浏览文件 @
3089deda
theano/compile/debugmode.py
浏览文件 @
3089deda
...
@@ -326,7 +326,7 @@ class BadDestroyMap(DebugModeError):
...
@@ -326,7 +326,7 @@ class BadDestroyMap(DebugModeError):
wasn't in the destroy_map"""
wasn't in the destroy_map"""
def
__init__
(
self
,
node
,
idx
,
old_val
,
new_val
,
perform
):
def
__init__
(
self
,
node
,
idx
,
old_val
,
new_val
,
perform
):
#super(BadDestroyMap, self).__init__()
#super(BadDestroyMap, self).__init__()
DebugModeError
.
__init__
(
self
)
#
to be compatible with python2.4
DebugModeError
.
__init__
(
self
)
#
to be compatible with python2.4
self
.
node
=
node
self
.
node
=
node
self
.
idx
=
idx
self
.
idx
=
idx
self
.
old_val
=
old_val
self
.
old_val
=
old_val
...
@@ -794,7 +794,7 @@ def _check_inputs(node, storage_map, r_vals, dr_vals, active_nodes,
...
@@ -794,7 +794,7 @@ def _check_inputs(node, storage_map, r_vals, dr_vals, active_nodes,
# bad: there should only be one active node that destroys any variable
# bad: there should only be one active node that destroys any variable
raise
Exception
(
'failure in topological ordering'
)
raise
Exception
(
'failure in topological ordering'
)
if
clobber_dr_vals
:
if
clobber_dr_vals
:
dr_vals
[
r
]
=
(
storage_map
[
r
][
0
],
node
)
#
no copy, this is the last use of this variable
dr_vals
[
r
]
=
(
storage_map
[
r
][
0
],
node
)
#
no copy, this is the last use of this variable
# make sure that dr_vals[r] doens't get used again
# make sure that dr_vals[r] doens't get used again
storage_map
[
r
][
0
]
=
data_destroyed
storage_map
[
r
][
0
]
=
data_destroyed
else
:
else
:
...
@@ -1999,7 +1999,7 @@ class _Linker(gof.link.LocalLinker):
...
@@ -1999,7 +1999,7 @@ class _Linker(gof.link.LocalLinker):
raise
InvalidValueError
(
r
,
storage_map
[
r
][
0
],
hint
=
'c output'
)
raise
InvalidValueError
(
r
,
storage_map
[
r
][
0
],
hint
=
'c output'
)
if
thunk_py
:
if
thunk_py
:
assert
r
in
r_vals
#
because we put it in during the thunk_py branch
assert
r
in
r_vals
#
because we put it in during the thunk_py branch
# check for stride correctness (may raise exception)
# check for stride correctness (may raise exception)
_check_strides_match
(
r_vals
[
r
],
_check_strides_match
(
r_vals
[
r
],
storage_map
[
r
][
0
],
storage_map
[
r
][
0
],
...
@@ -2032,7 +2032,7 @@ class _Linker(gof.link.LocalLinker):
...
@@ -2032,7 +2032,7 @@ class _Linker(gof.link.LocalLinker):
#print >> sys.stderr, i, "DEBUGMODE storing reference output %x" % id(storage_map[r][0])
#print >> sys.stderr, i, "DEBUGMODE storing reference output %x" % id(storage_map[r][0])
# retrieve each output from the storage_map
# retrieve each output from the storage_map
r_vals
[
r
]
=
storage_map
[
r
][
0
]
r_vals
[
r
]
=
storage_map
[
r
][
0
]
storage_map
[
r
][
0
]
=
None
#
clear the storage_map for the thunk_c
storage_map
[
r
][
0
]
=
None
#
clear the storage_map for the thunk_c
if
self
.
maker
.
mode
.
check_preallocated_output
:
if
self
.
maker
.
mode
.
check_preallocated_output
:
prealloc_modes
=
\
prealloc_modes
=
\
...
...
theano/compile/function_module.py
浏览文件 @
3089deda
theano/compile/profilemode.py
浏览文件 @
3089deda
...
@@ -402,7 +402,7 @@ class ProfileMode(Mode):
...
@@ -402,7 +402,7 @@ class ProfileMode(Mode):
sop_time
=
{}
sop_time
=
{}
sop_call
=
{}
sop_call
=
{}
sop_op
=
{}
sop_op
=
{}
sop_cimpl
=
{}
#
map each op class to Bool. True iff all applies were done in c.
sop_cimpl
=
{}
#
map each op class to Bool. True iff all applies were done in c.
for
a
,
t
in
op_time
.
items
():
for
a
,
t
in
op_time
.
items
():
typ
=
type
(
a
)
typ
=
type
(
a
)
sop_time
.
setdefault
(
typ
,
0
)
sop_time
.
setdefault
(
typ
,
0
)
...
...
theano/compile/tests/test_function_module.py
浏览文件 @
3089deda
...
@@ -36,7 +36,7 @@ def checkfor(testcase, fn, E):
...
@@ -36,7 +36,7 @@ def checkfor(testcase, fn, E):
class
T_function
(
unittest
.
TestCase
):
class
T_function
(
unittest
.
TestCase
):
def
test_none
(
self
):
def
test_none
(
self
):
fn
=
function
([],
None
)
#
ok
fn
=
function
([],
None
)
#
ok
rval
=
fn
()
rval
=
fn
()
if
rval
==
[]:
if
rval
==
[]:
raise
KnownFailureTest
(
'See #254: Using None as function output leads to [] return value'
)
raise
KnownFailureTest
(
'See #254: Using None as function output leads to [] return value'
)
...
@@ -44,7 +44,7 @@ class T_function(unittest.TestCase):
...
@@ -44,7 +44,7 @@ class T_function(unittest.TestCase):
assert
rval
is
None
assert
rval
is
None
def
test_empty
(
self
):
def
test_empty
(
self
):
fn
=
function
([],
[])
#
ok
fn
=
function
([],
[])
#
ok
self
.
assertTrue
(
fn
()
==
[])
self
.
assertTrue
(
fn
()
==
[])
def
test_extra_inputs
(
self
):
def
test_extra_inputs
(
self
):
...
@@ -122,9 +122,9 @@ class T_function(unittest.TestCase):
...
@@ -122,9 +122,9 @@ class T_function(unittest.TestCase):
self
.
assertTrue
(
f
(
s
=
2
,
x
=
1
)
==
0.5
)
self
.
assertTrue
(
f
(
s
=
2
,
x
=
1
)
==
0.5
)
self
.
assertTrue
(
f
(
x
=
2
,
s
=
1
)
==
2.0
)
self
.
assertTrue
(
f
(
x
=
2
,
s
=
1
)
==
2.0
)
self
.
assertTrue
(
f
(
2
,
s
=
1
)
==
2.0
)
self
.
assertTrue
(
f
(
2
,
s
=
1
)
==
2.0
)
checkfor
(
self
,
lambda
:
f
(
2
,
x
=
2.0
),
TypeError
)
#
got multiple values for keyword argument 'x'
checkfor
(
self
,
lambda
:
f
(
2
,
x
=
2.0
),
TypeError
)
#
got multiple values for keyword argument 'x'
checkfor
(
self
,
lambda
:
f
(
x
=
1
),
TypeError
)
#
takes exactly 2 non-keyword arguments (1 given)
checkfor
(
self
,
lambda
:
f
(
x
=
1
),
TypeError
)
#
takes exactly 2 non-keyword arguments (1 given)
checkfor
(
self
,
lambda
:
f
(
s
=
1
),
TypeError
)
#
takes exactly 2 non-keyword arguments (0 given)
checkfor
(
self
,
lambda
:
f
(
s
=
1
),
TypeError
)
#
takes exactly 2 non-keyword arguments (0 given)
def
test_naming_rule1
(
self
):
def
test_naming_rule1
(
self
):
a
=
T
.
scalar
()
# the a is for 'anonymous' (un-named).
a
=
T
.
scalar
()
# the a is for 'anonymous' (un-named).
...
@@ -133,8 +133,8 @@ class T_function(unittest.TestCase):
...
@@ -133,8 +133,8 @@ class T_function(unittest.TestCase):
self
.
assertTrue
(
f
(
1
,
2
)
==
0.5
)
self
.
assertTrue
(
f
(
1
,
2
)
==
0.5
)
self
.
assertTrue
(
f
(
2
,
1
)
==
2.0
)
self
.
assertTrue
(
f
(
2
,
1
)
==
2.0
)
self
.
assertTrue
(
f
(
2
,
s
=
1
)
==
2.0
)
self
.
assertTrue
(
f
(
2
,
s
=
1
)
==
2.0
)
checkfor
(
self
,
lambda
:
f
(
q
=
2
,
s
=
1
),
TypeError
)
#
got unexpected keyword argument 'q'
checkfor
(
self
,
lambda
:
f
(
q
=
2
,
s
=
1
),
TypeError
)
#
got unexpected keyword argument 'q'
checkfor
(
self
,
lambda
:
f
(
a
=
2
,
s
=
1
),
TypeError
)
#
got unexpected keyword argument 'a'
checkfor
(
self
,
lambda
:
f
(
a
=
2
,
s
=
1
),
TypeError
)
#
got unexpected keyword argument 'a'
def
test_naming_rule2
(
self
):
def
test_naming_rule2
(
self
):
a
=
T
.
scalar
()
# the a is for 'anonymous' (un-named).
a
=
T
.
scalar
()
# the a is for 'anonymous' (un-named).
...
@@ -146,8 +146,8 @@ class T_function(unittest.TestCase):
...
@@ -146,8 +146,8 @@ class T_function(unittest.TestCase):
self
.
assertTrue
(
f
(
9
,
1
,
2
)
==
0.5
)
self
.
assertTrue
(
f
(
9
,
1
,
2
)
==
0.5
)
self
.
assertTrue
(
f
(
9
,
2
,
1
)
==
2.0
)
self
.
assertTrue
(
f
(
9
,
2
,
1
)
==
2.0
)
self
.
assertTrue
(
f
(
9
,
2
,
s
=
1
)
==
2.0
)
self
.
assertTrue
(
f
(
9
,
2
,
s
=
1
)
==
2.0
)
checkfor
(
self
,
lambda
:
f
(
x
=
9
,
a
=
2
,
s
=
1
),
TypeError
)
#
got unexpected keyword argument 'x'
checkfor
(
self
,
lambda
:
f
(
x
=
9
,
a
=
2
,
s
=
1
),
TypeError
)
#
got unexpected keyword argument 'x'
checkfor
(
self
,
lambda
:
f
(
5.0
,
x
=
9
),
TypeError
)
#
got unexpected keyword argument 'x'
checkfor
(
self
,
lambda
:
f
(
5.0
,
x
=
9
),
TypeError
)
#
got unexpected keyword argument 'x'
def
test_naming_rule3
(
self
):
def
test_naming_rule3
(
self
):
a
=
T
.
scalar
()
# the a is for 'anonymous' (un-named).
a
=
T
.
scalar
()
# the a is for 'anonymous' (un-named).
...
@@ -155,13 +155,13 @@ class T_function(unittest.TestCase):
...
@@ -155,13 +155,13 @@ class T_function(unittest.TestCase):
# x's name is not ignored (as in test_naming_rule2) because a has a default value.
# x's name is not ignored (as in test_naming_rule2) because a has a default value.
f
=
function
([
x
,
In
(
a
,
value
=
1.0
),
s
],
a
/
s
+
x
)
f
=
function
([
x
,
In
(
a
,
value
=
1.0
),
s
],
a
/
s
+
x
)
self
.
assertTrue
(
f
(
9
,
2
,
4
)
==
9.5
)
#
can specify all args in order
self
.
assertTrue
(
f
(
9
,
2
,
4
)
==
9.5
)
#
can specify all args in order
self
.
assertTrue
(
f
(
9
,
2
,
s
=
4
)
==
9.5
)
# can give s as kwarg
self
.
assertTrue
(
f
(
9
,
2
,
s
=
4
)
==
9.5
)
# can give s as kwarg
self
.
assertTrue
(
f
(
9
,
s
=
4
)
==
9.25
)
# can give s as kwarg, get default a
self
.
assertTrue
(
f
(
9
,
s
=
4
)
==
9.25
)
# can give s as kwarg, get default a
self
.
assertTrue
(
f
(
x
=
9
,
s
=
4
)
==
9.25
)
# can give s as kwarg, omit a, x as kw
self
.
assertTrue
(
f
(
x
=
9
,
s
=
4
)
==
9.25
)
# can give s as kwarg, omit a, x as kw
checkfor
(
self
,
lambda
:
f
(
x
=
9
,
a
=
2
,
s
=
4
),
TypeError
)
#
got unexpected keyword argument 'a'
checkfor
(
self
,
lambda
:
f
(
x
=
9
,
a
=
2
,
s
=
4
),
TypeError
)
#
got unexpected keyword argument 'a'
checkfor
(
self
,
lambda
:
f
(),
TypeError
)
#
takes exactly 3 non-keyword arguments (0 given)
checkfor
(
self
,
lambda
:
f
(),
TypeError
)
#
takes exactly 3 non-keyword arguments (0 given)
checkfor
(
self
,
lambda
:
f
(
x
=
9
),
TypeError
)
#
takes exactly 3 non-keyword arguments (1 given)
checkfor
(
self
,
lambda
:
f
(
x
=
9
),
TypeError
)
#
takes exactly 3 non-keyword arguments (1 given)
def
test_naming_rule4
(
self
):
def
test_naming_rule4
(
self
):
a
=
T
.
scalar
()
# the a is for 'anonymous' (un-named).
a
=
T
.
scalar
()
# the a is for 'anonymous' (un-named).
...
@@ -169,14 +169,14 @@ class T_function(unittest.TestCase):
...
@@ -169,14 +169,14 @@ class T_function(unittest.TestCase):
f
=
function
([
x
,
In
(
a
,
value
=
1.0
,
name
=
'a'
),
s
],
a
/
s
+
x
)
f
=
function
([
x
,
In
(
a
,
value
=
1.0
,
name
=
'a'
),
s
],
a
/
s
+
x
)
self
.
assertTrue
(
f
(
9
,
2
,
4
)
==
9.5
)
#
can specify all args in order
self
.
assertTrue
(
f
(
9
,
2
,
4
)
==
9.5
)
#
can specify all args in order
self
.
assertTrue
(
f
(
9
,
2
,
s
=
4
)
==
9.5
)
# can give s as kwarg
self
.
assertTrue
(
f
(
9
,
2
,
s
=
4
)
==
9.5
)
# can give s as kwarg
self
.
assertTrue
(
f
(
9
,
s
=
4
)
==
9.25
)
# can give s as kwarg, get default a
self
.
assertTrue
(
f
(
9
,
s
=
4
)
==
9.25
)
# can give s as kwarg, get default a
self
.
assertTrue
(
f
(
9
,
a
=
2
,
s
=
4
)
==
9.5
)
# can give s as kwarg, a as kwarg
self
.
assertTrue
(
f
(
9
,
a
=
2
,
s
=
4
)
==
9.5
)
# can give s as kwarg, a as kwarg
self
.
assertTrue
(
f
(
x
=
9
,
a
=
2
,
s
=
4
)
==
9.5
)
# can give all kwargs
self
.
assertTrue
(
f
(
x
=
9
,
a
=
2
,
s
=
4
)
==
9.5
)
# can give all kwargs
self
.
assertTrue
(
f
(
x
=
9
,
s
=
4
)
==
9.25
)
# can give all kwargs
self
.
assertTrue
(
f
(
x
=
9
,
s
=
4
)
==
9.25
)
# can give all kwargs
checkfor
(
self
,
lambda
:
f
(),
TypeError
)
#
takes exactly 3 non-keyword arguments (0 given)
checkfor
(
self
,
lambda
:
f
(),
TypeError
)
#
takes exactly 3 non-keyword arguments (0 given)
checkfor
(
self
,
lambda
:
f
(
5.0
,
x
=
9
),
TypeError
)
#
got multiple values for keyword argument 'x'
checkfor
(
self
,
lambda
:
f
(
5.0
,
x
=
9
),
TypeError
)
#
got multiple values for keyword argument 'x'
def
test_state_access
(
self
):
def
test_state_access
(
self
):
a
=
T
.
scalar
()
# the a is for 'anonymous' (un-named).
a
=
T
.
scalar
()
# the a is for 'anonymous' (un-named).
...
@@ -188,14 +188,14 @@ class T_function(unittest.TestCase):
...
@@ -188,14 +188,14 @@ class T_function(unittest.TestCase):
self
.
assertTrue
(
f
[
s
]
==
0.0
)
self
.
assertTrue
(
f
[
s
]
==
0.0
)
self
.
assertTrue
(
f
(
3.0
)
==
3.0
)
self
.
assertTrue
(
f
(
3.0
)
==
3.0
)
self
.
assertTrue
(
f
(
3.0
,
a
=
2.0
)
==
9.0
)
#
3.0 + 2*3.0
self
.
assertTrue
(
f
(
3.0
,
a
=
2.0
)
==
9.0
)
#
3.0 + 2*3.0
self
.
assertTrue
(
f
[
a
]
==
1.0
)
#
state hasn't changed permanently, we just overrode it last line
self
.
assertTrue
(
f
[
a
]
==
1.0
)
#
state hasn't changed permanently, we just overrode it last line
self
.
assertTrue
(
f
[
s
]
==
9.0
)
self
.
assertTrue
(
f
[
s
]
==
9.0
)
f
[
a
]
=
5.0
f
[
a
]
=
5.0
self
.
assertTrue
(
f
[
a
]
==
5.0
)
self
.
assertTrue
(
f
[
a
]
==
5.0
)
self
.
assertTrue
(
f
(
3.0
)
==
24.0
)
#
9 + 3*5
self
.
assertTrue
(
f
(
3.0
)
==
24.0
)
#
9 + 3*5
self
.
assertTrue
(
f
[
s
]
==
24.0
)
self
.
assertTrue
(
f
[
s
]
==
24.0
)
def
test_same_names
(
self
):
def
test_same_names
(
self
):
...
@@ -233,10 +233,10 @@ class T_function(unittest.TestCase):
...
@@ -233,10 +233,10 @@ class T_function(unittest.TestCase):
self
.
assertFalse
(
g
.
value
[
s
]
is
f
.
value
[
s
])
# should have been copied because it is mutable.
self
.
assertFalse
(
g
.
value
[
s
]
is
f
.
value
[
s
])
# should have been copied because it is mutable.
self
.
assertFalse
((
g
.
value
[
s
]
!=
f
.
value
[
s
])
.
any
())
# its contents should be identical
self
.
assertFalse
((
g
.
value
[
s
]
!=
f
.
value
[
s
])
.
any
())
# its contents should be identical
self
.
assertTrue
(
f
(
2
,
1
)
==
g
(
2
))
#
they should be in sync, default value should be copied.
self
.
assertTrue
(
f
(
2
,
1
)
==
g
(
2
))
#
they should be in sync, default value should be copied.
self
.
assertTrue
(
f
(
2
,
1
)
==
g
(
2
))
#
they should be in sync, default value should be copied.
self
.
assertTrue
(
f
(
2
,
1
)
==
g
(
2
))
#
they should be in sync, default value should be copied.
f
(
1
,
2
)
# put them out of sync
f
(
1
,
2
)
# put them out of sync
self
.
assertFalse
(
f
(
1
,
2
)
==
g
(
1
,
2
))
#
they should not be equal anymore.
self
.
assertFalse
(
f
(
1
,
2
)
==
g
(
1
,
2
))
#
they should not be equal anymore.
def
test_shared_state0
(
self
):
def
test_shared_state0
(
self
):
a
=
T
.
scalar
()
# the a is for 'anonymous' (un-named).
a
=
T
.
scalar
()
# the a is for 'anonymous' (un-named).
...
@@ -357,20 +357,20 @@ class T_function(unittest.TestCase):
...
@@ -357,20 +357,20 @@ class T_function(unittest.TestCase):
a
=
T
.
dmatrix
()
a
=
T
.
dmatrix
()
f
=
function
([
a
],
Out
(
a
,
borrow
=
False
))
f
=
function
([
a
],
Out
(
a
,
borrow
=
False
))
o
=
N
.
ones
((
3
,
3
))
o
=
N
.
ones
((
3
,
3
))
assert
o
is
not
f
(
o
)
#
function no longer permits aliasing outputs to inputs
assert
o
is
not
f
(
o
)
#
function no longer permits aliasing outputs to inputs
f
=
function
([
a
],
Out
(
a
*
4
,
borrow
=
False
))
f
=
function
([
a
],
Out
(
a
*
4
,
borrow
=
False
))
o
=
N
.
ones
((
3
,
3
))
o
=
N
.
ones
((
3
,
3
))
four
=
f
(
o
)
four
=
f
(
o
)
assert
numpy
.
all
(
four
==
4
)
assert
numpy
.
all
(
four
==
4
)
f
(
o
+.
1
)
#
should not clobber the memory used to store four
f
(
o
+.
1
)
#
should not clobber the memory used to store four
assert
numpy
.
all
(
four
==
4
)
assert
numpy
.
all
(
four
==
4
)
f
=
function
([
a
],
Out
(
a
*
4
,
borrow
=
True
),
mode
=
theano
.
Mode
(
'c|py_nogc'
,
'fast_run'
))
f
=
function
([
a
],
Out
(
a
*
4
,
borrow
=
True
),
mode
=
theano
.
Mode
(
'c|py_nogc'
,
'fast_run'
))
o
=
N
.
ones
((
3
,
3
))
o
=
N
.
ones
((
3
,
3
))
four
=
f
(
o
)
four
=
f
(
o
)
assert
numpy
.
all
(
four
==
4
)
assert
numpy
.
all
(
four
==
4
)
f
(
o
+.
1
)
#
should clobber the memory used to store four
f
(
o
+.
1
)
#
should clobber the memory used to store four
if
theano
.
config
.
cxx
:
if
theano
.
config
.
cxx
:
assert
not
numpy
.
all
(
four
==
4
)
assert
not
numpy
.
all
(
four
==
4
)
else
:
else
:
...
@@ -456,10 +456,10 @@ class T_picklefunction(unittest.TestCase):
...
@@ -456,10 +456,10 @@ class T_picklefunction(unittest.TestCase):
self
.
assertFalse
(
g
.
value
[
2
]
is
f
.
value
[
2
])
# should have been copied because it is mutable.
self
.
assertFalse
(
g
.
value
[
2
]
is
f
.
value
[
2
])
# should have been copied because it is mutable.
self
.
assertFalse
((
g
.
value
[
2
]
!=
f
.
value
[
2
])
.
any
())
# its contents should be identical
self
.
assertFalse
((
g
.
value
[
2
]
!=
f
.
value
[
2
])
.
any
())
# its contents should be identical
self
.
assertTrue
(
f
(
2
,
1
)
==
g
(
2
))
#
they should be in sync, default value should be copied.
self
.
assertTrue
(
f
(
2
,
1
)
==
g
(
2
))
#
they should be in sync, default value should be copied.
self
.
assertTrue
(
f
(
2
,
1
)
==
g
(
2
))
#
they should be in sync, default value should be copied.
self
.
assertTrue
(
f
(
2
,
1
)
==
g
(
2
))
#
they should be in sync, default value should be copied.
f
(
1
,
2
)
# put them out of sync
f
(
1
,
2
)
# put them out of sync
self
.
assertFalse
(
f
(
1
,
2
)
==
g
(
1
,
2
))
#
they should not be equal anymore.
self
.
assertFalse
(
f
(
1
,
2
)
==
g
(
1
,
2
))
#
they should not be equal anymore.
g
(
1
,
2
)
# put them back in sync
g
(
1
,
2
)
# put them back in sync
self
.
assertTrue
(
f
(
3
)
==
g
(
3
))
# They should be in sync again.
self
.
assertTrue
(
f
(
3
)
==
g
(
3
))
# They should be in sync again.
...
@@ -517,10 +517,10 @@ class T_picklefunction(unittest.TestCase):
...
@@ -517,10 +517,10 @@ class T_picklefunction(unittest.TestCase):
self
.
assertFalse
(
g
.
value
[
2
]
is
f
.
value
[
2
])
# should have been copied because it is mutable.
self
.
assertFalse
(
g
.
value
[
2
]
is
f
.
value
[
2
])
# should have been copied because it is mutable.
self
.
assertFalse
((
g
.
value
[
2
]
!=
f
.
value
[
2
])
.
any
())
# its contents should be identical
self
.
assertFalse
((
g
.
value
[
2
]
!=
f
.
value
[
2
])
.
any
())
# its contents should be identical
self
.
assertTrue
(
f
(
2
,
1
)
==
g
(
2
))
#
they should be in sync, default value should be copied.
self
.
assertTrue
(
f
(
2
,
1
)
==
g
(
2
))
#
they should be in sync, default value should be copied.
self
.
assertTrue
(
f
(
2
,
1
)
==
g
(
2
))
#
they should be in sync, default value should be copied.
self
.
assertTrue
(
f
(
2
,
1
)
==
g
(
2
))
#
they should be in sync, default value should be copied.
f
(
1
,
2
)
# put them out of sync
f
(
1
,
2
)
# put them out of sync
self
.
assertFalse
(
f
(
1
,
2
)
==
g
(
1
,
2
))
#
they should not be equal anymore.
self
.
assertFalse
(
f
(
1
,
2
)
==
g
(
1
,
2
))
#
they should not be equal anymore.
def
test_optimizations_preserved
(
self
):
def
test_optimizations_preserved
(
self
):
a
=
T
.
dvector
()
# the a is for 'anonymous' (un-named).
a
=
T
.
dvector
()
# the a is for 'anonymous' (un-named).
...
...
theano/gof/callcache.py
浏览文件 @
3089deda
...
@@ -7,7 +7,7 @@ class CallCache(object):
...
@@ -7,7 +7,7 @@ class CallCache(object):
self
.
filename
=
filename
self
.
filename
=
filename
try
:
try
:
if
filename
is
None
:
if
filename
is
None
:
raise
IOError
(
'bad filename'
)
#
just goes to except
raise
IOError
(
'bad filename'
)
#
just goes to except
f
=
open
(
filename
,
'r'
)
f
=
open
(
filename
,
'r'
)
self
.
cache
=
cPickle
.
load
(
f
)
self
.
cache
=
cPickle
.
load
(
f
)
f
.
close
()
f
.
close
()
...
...
theano/gof/destroyhandler.py
浏览文件 @
3089deda
...
@@ -325,7 +325,7 @@ if 0:
...
@@ -325,7 +325,7 @@ if 0:
fgraph
.
destroy_handler
=
self
fgraph
.
destroy_handler
=
self
self
.
fgraph
=
fgraph
self
.
fgraph
=
fgraph
self
.
destroyers
=
OrderedSet
()
#
set of Apply instances with non-null destroy_map
self
.
destroyers
=
OrderedSet
()
#
set of Apply instances with non-null destroy_map
self
.
view_i
=
{}
# variable -> variable used in calculation
self
.
view_i
=
{}
# variable -> variable used in calculation
self
.
view_o
=
{}
# variable -> set of variables that use this one as a direct input
self
.
view_o
=
{}
# variable -> set of variables that use this one as a direct input
# clients: how many times does an apply use a given variable
# clients: how many times does an apply use a given variable
...
@@ -725,7 +725,7 @@ class DestroyHandler(toolbox.Bookkeeper):
...
@@ -725,7 +725,7 @@ class DestroyHandler(toolbox.Bookkeeper):
fgraph
.
destroy_handler
=
self
fgraph
.
destroy_handler
=
self
self
.
fgraph
=
fgraph
self
.
fgraph
=
fgraph
self
.
destroyers
=
OrderedSet
()
#
set of Apply instances with non-null destroy_map
self
.
destroyers
=
OrderedSet
()
#
set of Apply instances with non-null destroy_map
self
.
view_i
=
OrderedDict
()
# variable -> variable used in calculation
self
.
view_i
=
OrderedDict
()
# variable -> variable used in calculation
self
.
view_o
=
OrderedDict
()
# variable -> set of variables that use this one as a direct input
self
.
view_o
=
OrderedDict
()
# variable -> set of variables that use this one as a direct input
# clients: how many times does an apply use a given variable
# clients: how many times does an apply use a given variable
...
...
theano/gof/fg.py
浏览文件 @
3089deda
...
@@ -396,7 +396,7 @@ class FunctionGraph(utils.object2):
...
@@ -396,7 +396,7 @@ class FunctionGraph(utils.object2):
# then __prune__ is a no-op.
# then __prune__ is a no-op.
for
output
in
node
.
outputs
:
for
output
in
node
.
outputs
:
# Cannot prune an op which is an output or used somewhere
# Cannot prune an op which is an output or used somewhere
if
self
.
clients
(
output
)
or
output
in
self
.
outputs
:
#
output in self.outputs or self.clients(output):
if
self
.
clients
(
output
)
or
output
in
self
.
outputs
:
#
output in self.outputs or self.clients(output):
return
return
self
.
apply_nodes
.
remove
(
node
)
self
.
apply_nodes
.
remove
(
node
)
self
.
variables
.
difference_update
(
node
.
outputs
)
self
.
variables
.
difference_update
(
node
.
outputs
)
...
...
theano/gof/link.py
浏览文件 @
3089deda
...
@@ -685,7 +685,7 @@ class PerformLinker(LocalLinker):
...
@@ -685,7 +685,7 @@ class PerformLinker(LocalLinker):
f
=
streamline
(
fgraph
,
thunks
,
order
,
post_thunk_old_storage
,
f
=
streamline
(
fgraph
,
thunks
,
order
,
post_thunk_old_storage
,
no_recycling
=
no_recycling
)
no_recycling
=
no_recycling
)
f
.
allow_gc
=
self
.
allow_gc
#
HACK: this is a way of passing an arg to Function.__call__
f
.
allow_gc
=
self
.
allow_gc
#
HACK: this is a way of passing an arg to Function.__call__
add_clear_storage
(
f
,
computed
,
storage_map
)
add_clear_storage
(
f
,
computed
,
storage_map
)
f
.
storage_map
=
storage_map
f
.
storage_map
=
storage_map
...
...
theano/gof/tests/test_graph.py
浏览文件 @
3089deda
theano/gof/tests/test_opt.py
浏览文件 @
3089deda
theano/gof/type.py
浏览文件 @
3089deda
...
@@ -226,8 +226,8 @@ class PureType(object):
...
@@ -226,8 +226,8 @@ class PureType(object):
"""
"""
Variable
=
graph
.
Variable
#
the type that will be created by call to make_variable.
Variable
=
graph
.
Variable
#
the type that will be created by call to make_variable.
Constant
=
graph
.
Constant
#
the type that will be created by call to make_constant
Constant
=
graph
.
Constant
#
the type that will be created by call to make_constant
def
filter
(
self
,
data
,
strict
=
False
,
allow_downcast
=
None
):
def
filter
(
self
,
data
,
strict
=
False
,
allow_downcast
=
None
):
"""Required: Return data or an appropriately wrapped/converted data.
"""Required: Return data or an appropriately wrapped/converted data.
...
...
theano/gof/unify.py
浏览文件 @
3089deda
theano/misc/check_duplicate_key.py
浏览文件 @
3089deda
...
@@ -55,7 +55,7 @@ for val in keys.values():
...
@@ -55,7 +55,7 @@ for val in keys.values():
nbs_keys
[
val
]
+=
1
nbs_keys
[
val
]
+=
1
nbs_mod
=
{}
# nb seen -> how many key
nbs_mod
=
{}
# nb seen -> how many key
nbs_mod_to_key
=
{}
#
nb seen -> keys
nbs_mod_to_key
=
{}
#
nb seen -> keys
more_than_one
=
0
more_than_one
=
0
for
mod
,
kk
in
mods
.
iteritems
():
for
mod
,
kk
in
mods
.
iteritems
():
val
=
len
(
kk
)
val
=
len
(
kk
)
...
...
theano/misc/cudamat_utils.py
浏览文件 @
3089deda
theano/misc/gnumpy_utils.py
浏览文件 @
3089deda
theano/misc/hooks/check_whitespace.py
浏览文件 @
3089deda
theano/misc/pycuda_utils.py
浏览文件 @
3089deda
theano/sandbox/cuda/basic_ops.py
浏览文件 @
3089deda
...
@@ -3415,7 +3415,7 @@ class GpuAlloc(GpuAllocEmpty):
...
@@ -3415,7 +3415,7 @@ class GpuAlloc(GpuAllocEmpty):
# If the output is a constant, it will have to be deepcopied
# If the output is a constant, it will have to be deepcopied
# each time the function is called. So we do not fold.
# each time the function is called. So we do not fold.
return
False
return
False
elif
(
#
The following ops work inplace of their input id 0.
elif
(
#
The following ops work inplace of their input id 0.
client
[
1
]
==
0
and
client
[
1
]
==
0
and
isinstance
(
client
[
0
]
.
op
,
(
isinstance
(
client
[
0
]
.
op
,
(
# Ops that will work inplace on the Alloc. So if they
# Ops that will work inplace on the Alloc. So if they
...
...
theano/sandbox/cuda/elemwise.py
浏览文件 @
3089deda
...
@@ -260,7 +260,7 @@ class NaiveAlgo(object):
...
@@ -260,7 +260,7 @@ class NaiveAlgo(object):
,
nodename
+
'_scalar_'
,
nodename
+
'_scalar_'
,
get_str_list_logical_scalar
(
node
,
value_str
=
'value0[
%
i]'
)
,
get_str_list_logical_scalar
(
node
,
value_str
=
'value0[
%
i]'
)
,
[
'ii_o
%
i_data[0]'
%
ipos
for
ipos
,
i
in
enumerate
(
node
.
outputs
)]
,
[
'ii_o
%
i_data[0]'
%
ipos
for
ipos
,
i
in
enumerate
(
node
.
outputs
)]
,
sub
=
dict
(
fail
=
'return;'
))
#
TODO: set a failure code somehow!!!
,
sub
=
dict
(
fail
=
'return;'
))
#
TODO: set a failure code somehow!!!
print
>>
sio
,
" "
,
task_code
print
>>
sio
,
" "
,
task_code
print
>>
sio
,
" }"
*
nd
print
>>
sio
,
" }"
*
nd
...
@@ -398,7 +398,7 @@ class NaiveAlgo(object):
...
@@ -398,7 +398,7 @@ class NaiveAlgo(object):
,
nodename
+
'_scalar_'
,
nodename
+
'_scalar_'
,
[
'i
%
i_data_
%
i[0]'
%
(
ipos
,
d
)
for
ipos
,
i
in
enumerate
(
node
.
inputs
)]
,
[
'i
%
i_data_
%
i[0]'
%
(
ipos
,
d
)
for
ipos
,
i
in
enumerate
(
node
.
inputs
)]
,
[
'o
%
i_data_
%
i[0]'
%
(
ipos
,
d
)
for
ipos
,
i
in
enumerate
(
node
.
outputs
)]
,
[
'o
%
i_data_
%
i[0]'
%
(
ipos
,
d
)
for
ipos
,
i
in
enumerate
(
node
.
outputs
)]
,
sub
=
dict
(
fail
=
'return;'
))
#
TODO: set a failure code somehow!!!
,
sub
=
dict
(
fail
=
'return;'
))
#
TODO: set a failure code somehow!!!
if
nd
==
4
:
if
nd
==
4
:
decl_shared_stride
(
n_in
,
n_out
,
nd
)
decl_shared_stride
(
n_in
,
n_out
,
nd
)
...
@@ -473,7 +473,7 @@ class NaiveAlgo(object):
...
@@ -473,7 +473,7 @@ class NaiveAlgo(object):
#, ['i%i_data[i]'%ipos for ipos, i in enumerate(node.inputs)]
#, ['i%i_data[i]'%ipos for ipos, i in enumerate(node.inputs)]
,
get_str_list_logical_scalar
(
node
,
data_str
=
'i
%
i_data[i]'
)
,
get_str_list_logical_scalar
(
node
,
data_str
=
'i
%
i_data[i]'
)
,
[
'o
%
i_data[i]'
%
ipos
for
ipos
,
i
in
enumerate
(
node
.
outputs
)]
,
[
'o
%
i_data[i]'
%
ipos
for
ipos
,
i
in
enumerate
(
node
.
outputs
)]
,
sub
=
dict
(
fail
=
'return;'
))
#
TODO: set a failure code somehow!!!
,
sub
=
dict
(
fail
=
'return;'
))
#
TODO: set a failure code somehow!!!
print
>>
sio
,
" "
,
task_code
print
>>
sio
,
" "
,
task_code
print
>>
sio
,
" }"
print
>>
sio
,
" }"
print
>>
sio
,
"}"
print
>>
sio
,
"}"
...
@@ -844,9 +844,9 @@ nd_collapse_[i]=0;
...
@@ -844,9 +844,9 @@ nd_collapse_[i]=0;
launch_General
(
nodename
,
scalar_op
,
i
,
self
.
sync
)
launch_General
(
nodename
,
scalar_op
,
i
,
self
.
sync
)
print
>>
sio
,
" } break;"
print
>>
sio
,
" } break;"
print
>>
sio
,
"}"
#
end case
print
>>
sio
,
"}"
#
end case
print
>>
sio
,
"return -2;"
# should not get to this point
print
>>
sio
,
"return -2;"
# should not get to this point
print
>>
sio
,
"}"
#
end fct
print
>>
sio
,
"}"
#
end fct
# N.B. cudaGetLastError is called by c_code
# N.B. cudaGetLastError is called by c_code
return
sio
.
getvalue
()
return
sio
.
getvalue
()
...
...
theano/sandbox/cuda/tests/test_basic_ops.py
浏览文件 @
3089deda
差异被折叠。
点击展开。
theano/sandbox/cuda/tests/test_bench_loopfusion.py
浏览文件 @
3089deda
...
@@ -171,7 +171,7 @@ class Kouh2008(object):
...
@@ -171,7 +171,7 @@ class Kouh2008(object):
rval
=
cls
.
new_expbounds
(
rng
,
x_list
,
n_out
,
dtype
=
dtype
,
params
=
f_list
+
b_list
,
rval
=
cls
.
new_expbounds
(
rng
,
x_list
,
n_out
,
dtype
=
dtype
,
params
=
f_list
+
b_list
,
exponent_range
=
exponent_range
)
exponent_range
=
exponent_range
)
rval
.
f_list
=
f_list
rval
.
f_list
=
f_list
rval
.
input
=
input
#
add the input to the returned object
rval
.
input
=
input
#
add the input to the returned object
rval
.
filter_l1
=
sum
(
abs
(
fi
)
.
sum
()
for
fi
in
f_list
)
rval
.
filter_l1
=
sum
(
abs
(
fi
)
.
sum
()
for
fi
in
f_list
)
rval
.
filter_l2_sqr
=
sum
((
fi
**
2
)
.
sum
()
for
fi
in
f_list
)
rval
.
filter_l2_sqr
=
sum
((
fi
**
2
)
.
sum
()
for
fi
in
f_list
)
return
rval
return
rval
...
@@ -259,7 +259,7 @@ class Config(object):
...
@@ -259,7 +259,7 @@ class Config(object):
ft_batchsize
=
30
ft_batchsize
=
30
ft_epoch_len
=
50000
ft_epoch_len
=
50000
ft_status_interval
=
50
#
property( lambda s:s.ft_epoch_len/s.ft_batchsize)
ft_status_interval
=
50
#
property( lambda s:s.ft_epoch_len/s.ft_batchsize)
ft_validation_interval
=
property
(
lambda
s
:
s
.
ft_epoch_len
/
s
.
ft_batchsize
)
ft_validation_interval
=
property
(
lambda
s
:
s
.
ft_epoch_len
/
s
.
ft_batchsize
)
ft_ntrain_limit
=
0
ft_ntrain_limit
=
0
ft_test_lag1
=
True
ft_test_lag1
=
True
...
...
theano/sandbox/cuda/tests/test_conv_cuda_ndarray.py
浏览文件 @
3089deda
差异被折叠。
点击展开。
theano/sandbox/cuda/var.py
浏览文件 @
3089deda
...
@@ -89,7 +89,7 @@ class CudaNdarraySharedVariable(_operators, SharedVariable):
...
@@ -89,7 +89,7 @@ class CudaNdarraySharedVariable(_operators, SharedVariable):
return
self
.
container
.
value
return
self
.
container
.
value
else
:
else
:
return
copy
.
deepcopy
(
self
.
container
.
value
)
return
copy
.
deepcopy
(
self
.
container
.
value
)
else
:
#
return an ndarray
else
:
#
return an ndarray
return
numpy
.
asarray
(
self
.
container
.
value
)
return
numpy
.
asarray
(
self
.
container
.
value
)
def
set_value
(
self
,
value
,
borrow
=
False
):
def
set_value
(
self
,
value
,
borrow
=
False
):
...
...
theano/sandbox/debug.py
浏览文件 @
3089deda
theano/sandbox/gpuarray/basic_ops.py
浏览文件 @
3089deda
...
@@ -696,7 +696,7 @@ class GpuAlloc(HideC, Alloc):
...
@@ -696,7 +696,7 @@ class GpuAlloc(HideC, Alloc):
# If the output is a constant, it will have to be deepcopied
# If the output is a constant, it will have to be deepcopied
# each time the function is called. So we do not fold.
# each time the function is called. So we do not fold.
return
False
return
False
elif
(
#
The following ops work inplace of their input id 0.
elif
(
#
The following ops work inplace of their input id 0.
client
[
1
]
==
0
and
client
[
1
]
==
0
and
isinstance
(
client
[
0
]
.
op
,
(
isinstance
(
client
[
0
]
.
op
,
(
# Ops that will work inplace on the Alloc. So if they
# Ops that will work inplace on the Alloc. So if they
...
...
theano/sandbox/gpuarray/elemwise.py
浏览文件 @
3089deda
theano/sandbox/gpuarray/tests/test_conv_cuda_ndarray.py
浏览文件 @
3089deda
差异被折叠。
点击展开。
theano/sandbox/gpuarray/tests/test_elemwise.py
浏览文件 @
3089deda
...
@@ -124,39 +124,39 @@ class test_GpuCAReduceCuda(test_GpuCAReduceCPY):
...
@@ -124,39 +124,39 @@ class test_GpuCAReduceCuda(test_GpuCAReduceCPY):
((
1
,
2
),
(
1
,)),
((
1
,
2
),
(
1
,)),
((
100
,
3
,
1300
),
[
1
]),
((
100
,
3
,
1300
),
[
1
]),
((
0
,),
[
0
]),
((
5
,),
[
0
]),
((
0
,),
[
0
]),
((
5
,),
[
0
]),
((
0
,
0
),
[
0
,
1
]),
((
1
,
0
),
[
0
,
1
]),
((
5
,
4
),
[
0
,
1
]),
((
33
,
31
),
[
0
,
1
]),
((
5
,
4
),
[
1
]),
((
5
,
4
),
[
0
]),
#
need something bigger then 32 for some opt test.
((
0
,
0
),
[
0
,
1
]),
((
1
,
0
),
[
0
,
1
]),
((
5
,
4
),
[
0
,
1
]),
((
33
,
31
),
[
0
,
1
]),
((
5
,
4
),
[
1
]),
((
5
,
4
),
[
0
]),
#
need something bigger then 32 for some opt test.
((
5
,
4
,
3
),
[
0
]),
((
5
,
4
,
3
),
[
1
]),
((
5
,
4
,
3
),
[
0
,
1
]),
((
5
,
4
,
3
),
[
2
]),
((
5
,
4
,
3
),
[
1
,
2
]),
((
5
,
4
,
3
),
[
0
,
1
,
2
]),
((
5
,
4
,
3
),
[
0
]),
((
5
,
4
,
3
),
[
1
]),
((
5
,
4
,
3
),
[
0
,
1
]),
((
5
,
4
,
3
),
[
2
]),
((
5
,
4
,
3
),
[
1
,
2
]),
((
5
,
4
,
3
),
[
0
,
1
,
2
]),
((
0
,
0
,
0
,
0
),
[
0
,
1
,
2
,
3
]),
((
0
,
0
,
0
,
0
),
[
0
,
1
,
2
,
3
]),
((
5
,
4
,
3
,
20
),
[
2
,
3
]),
((
5
,
4
,
3
,
2
),
[
0
,
1
,
2
,
3
]),
((
5
,
4
,
3
,
2
),
[
0
,
2
,
3
]),
((
5
,
4
,
3
,
2
),
[
1
,
2
,
3
]),
((
5
,
4
,
3
,
20
),
[
2
,
3
]),
((
5
,
4
,
3
,
2
),
[
0
,
1
,
2
,
3
]),
((
5
,
4
,
3
,
2
),
[
0
,
2
,
3
]),
((
5
,
4
,
3
,
2
),
[
1
,
2
,
3
]),
# test shape bigger then 4096 on each dimension to make sure that we work correctly when we don't have enough thread/block in each dimensions
# test shape bigger then 4096 on each dimension to make sure that we work correctly when we don't have enough thread/block in each dimensions
((
4100
,
3
),
[
0
]),
((
3
,
4101
),
[
0
]),
#
10
((
4100
,
3
),
[
0
]),
((
3
,
4101
),
[
0
]),
#
10
((
1024
,
33
),
[
0
]),
((
33
,
1024
),
[
0
]),
#
10
((
1024
,
33
),
[
0
]),
((
33
,
1024
),
[
0
]),
#
10
((
1025
,
33
),
[
0
]),
((
33
,
1025
),
[
0
]),
#
10
((
1025
,
33
),
[
0
]),
((
33
,
1025
),
[
0
]),
#
10
((
4100
,
3
),
[
1
]),
((
3
,
4101
),
[
1
]),
#
01
((
4100
,
3
),
[
1
]),
((
3
,
4101
),
[
1
]),
#
01
((
1024
,
33
),
[
1
]),
((
33
,
1024
),
[
1
]),
#
01
((
1024
,
33
),
[
1
]),
((
33
,
1024
),
[
1
]),
#
01
((
1025
,
33
),
[
1
]),
((
33
,
1025
),
[
1
]),
#
01
((
1025
,
33
),
[
1
]),
((
33
,
1025
),
[
1
]),
#
01
((
4100
,
3
),
[
0
,
1
]),
((
3
,
4101
),
[
0
,
1
]),
#
11
((
4100
,
3
),
[
0
,
1
]),
((
3
,
4101
),
[
0
,
1
]),
#
11
((
1024
,
33
),
[
0
,
1
]),
((
33
,
1024
),
[
0
,
1
]),
#
01
((
1024
,
33
),
[
0
,
1
]),
((
33
,
1024
),
[
0
,
1
]),
#
01
((
1025
,
33
),
[
0
,
1
]),
((
33
,
1025
),
[
0
,
1
]),
#
01
((
1025
,
33
),
[
0
,
1
]),
((
33
,
1025
),
[
0
,
1
]),
#
01
((
4100
,
4
,
3
),
[
0
]),
((
5
,
4100
,
3
),
[
0
]),
((
5
,
4
,
4100
),
[
0
]),
((
3
,
65536
,
1
),
[
0
]),
#
100
((
4100
,
4
,
3
),
[
0
]),
((
5
,
4100
,
3
),
[
0
]),
((
5
,
4
,
4100
),
[
0
]),
((
3
,
65536
,
1
),
[
0
]),
#
100
((
4100
,
4
,
3
),
[
1
]),
((
5
,
4100
,
3
),
[
1
]),
((
5
,
4
,
4100
),
[
1
]),
#
010
((
4100
,
4
,
3
),
[
1
]),
((
5
,
4100
,
3
),
[
1
]),
((
5
,
4
,
4100
),
[
1
]),
#
010
((
4100
,
4
,
3
),
[
2
]),
((
5
,
4100
,
3
),
[
2
]),
((
5
,
4
,
4100
),
[
2
]),
#
001
((
4100
,
4
,
3
),
[
2
]),
((
5
,
4100
,
3
),
[
2
]),
((
5
,
4
,
4100
),
[
2
]),
#
001
((
4100
,
4
,
3
),
[
0
,
1
]),
((
5
,
4100
,
3
),
[
0
,
1
]),
((
5
,
4
,
4100
),
[
0
,
1
]),
#
110
((
4100
,
4
,
3
),
[
0
,
1
]),
((
5
,
4100
,
3
),
[
0
,
1
]),
((
5
,
4
,
4100
),
[
0
,
1
]),
#
110
((
4100
,
4
,
3
),
[
1
,
2
]),
((
5
,
4100
,
3
),
[
1
,
2
]),
((
5
,
4
,
4100
),
[
1
,
2
]),
#
011
((
4100
,
4
,
3
),
[
1
,
2
]),
((
5
,
4100
,
3
),
[
1
,
2
]),
((
5
,
4
,
4100
),
[
1
,
2
]),
#
011
#((4100,4,3),[0,2]),((5,4100,3),[0,2]),((5,4,4100),[0,2]),#101 ##not implemented
#((4100,4,3),[0,2]),((5,4100,3),[0,2]),((5,4,4100),[0,2]),#101 ##not implemented
((
4100
,
4
,
3
),
[
0
,
1
,
2
]),
((
5
,
4100
,
3
),
[
0
,
1
,
2
]),
((
5
,
4
,
4100
),
[
0
,
1
,
2
]),
#
111
((
4100
,
4
,
3
),
[
0
,
1
,
2
]),
((
5
,
4100
,
3
),
[
0
,
1
,
2
]),
((
5
,
4
,
4100
),
[
0
,
1
,
2
]),
#
111
((
65
,
4
,
3
),
[
0
,
1
,
2
]),
((
5
,
65
,
3
),
[
0
,
1
,
2
]),
((
5
,
4
,
65
),
[
0
,
1
,
2
]),
#
111
((
65
,
4
,
3
),
[
0
,
1
,
2
]),
((
5
,
65
,
3
),
[
0
,
1
,
2
]),
((
5
,
4
,
65
),
[
0
,
1
,
2
]),
#
111
((
4100
,
4
,
3
,
2
),
[
2
,
3
]),
((
4
,
4100
,
3
,
2
),
[
2
,
3
]),
((
4
,
3
,
4100
,
2
),
[
2
,
3
]),
((
4
,
3
,
2
,
4100
),
[
2
,
3
]),
#
0011
((
4100
,
4
,
3
,
2
),
[
2
,
3
]),
((
4
,
4100
,
3
,
2
),
[
2
,
3
]),
((
4
,
3
,
4100
,
2
),
[
2
,
3
]),
((
4
,
3
,
2
,
4100
),
[
2
,
3
]),
#
0011
((
4100
,
4
,
3
,
2
),
[
1
,
3
]),
((
4
,
4100
,
3
,
2
),
[
1
,
3
]),
((
4
,
3
,
4100
,
2
),
[
1
,
3
]),
((
4
,
3
,
2
,
4100
),
[
1
,
3
]),
#
0101
((
4100
,
4
,
3
,
2
),
[
1
,
3
]),
((
4
,
4100
,
3
,
2
),
[
1
,
3
]),
((
4
,
3
,
4100
,
2
),
[
1
,
3
]),
((
4
,
3
,
2
,
4100
),
[
1
,
3
]),
#
0101
((
4100
,
4
,
3
,
2
),
[
0
,
2
,
3
]),
((
4
,
4100
,
3
,
2
),
[
0
,
2
,
3
]),
((
4
,
3
,
4100
,
2
),
[
0
,
2
,
3
]),
#
((4,3,2,4100),[0,2,3]),#1011
((
4100
,
4
,
3
,
2
),
[
0
,
2
,
3
]),
((
4
,
4100
,
3
,
2
),
[
0
,
2
,
3
]),
((
4
,
3
,
4100
,
2
),
[
0
,
2
,
3
]),
#
((4,3,2,4100),[0,2,3]),#1011
((
4100
,
4
,
3
,
2
),
[
1
,
2
,
3
]),
((
4
,
4100
,
3
,
2
),
[
1
,
2
,
3
]),
((
4
,
3
,
4100
,
2
),
[
1
,
2
,
3
]),
((
4
,
3
,
2
,
4100
),
[
1
,
2
,
3
]),
#
0111
((
4100
,
4
,
3
,
2
),
[
1
,
2
,
3
]),
((
4
,
4100
,
3
,
2
),
[
1
,
2
,
3
]),
((
4
,
3
,
4100
,
2
),
[
1
,
2
,
3
]),
((
4
,
3
,
2
,
4100
),
[
1
,
2
,
3
]),
#
0111
((
65
,
4
,
3
,
2
),
[
1
,
2
,
3
]),
((
4
,
65
,
3
,
2
),
[
1
,
2
,
3
]),
((
4
,
3
,
65
,
2
),
[
1
,
2
,
3
]),
((
4
,
3
,
2
,
65
),
[
1
,
2
,
3
]),
#
0111
((
65
,
4
,
3
,
2
),
[
1
,
2
,
3
]),
((
4
,
65
,
3
,
2
),
[
1
,
2
,
3
]),
((
4
,
3
,
65
,
2
),
[
1
,
2
,
3
]),
((
4
,
3
,
2
,
65
),
[
1
,
2
,
3
]),
#
0111
((
4100
,
2
,
3
,
4
),
[
0
,
1
,
2
,
3
]),
((
2
,
4100
,
3
,
4
),
[
0
,
1
,
2
,
3
]),
((
2
,
3
,
4100
,
4
),
[
0
,
1
,
2
,
3
]),
((
2
,
3
,
4
,
4100
),
[
0
,
1
,
2
,
3
]),
((
128
,
1
,
2
,
3
),
[
0
,
1
,
2
,
3
]),
#
1111
((
4100
,
2
,
3
,
4
),
[
0
,
1
,
2
,
3
]),
((
2
,
4100
,
3
,
4
),
[
0
,
1
,
2
,
3
]),
((
2
,
3
,
4100
,
4
),
[
0
,
1
,
2
,
3
]),
((
2
,
3
,
4
,
4100
),
[
0
,
1
,
2
,
3
]),
((
128
,
1
,
2
,
3
),
[
0
,
1
,
2
,
3
]),
#
1111
# test pattern implemented by reshape
# test pattern implemented by reshape
# Skip them as this test the op directly, not the optimization with reshape
# Skip them as this test the op directly, not the optimization with reshape
...
...
theano/sandbox/linalg/ops.py
浏览文件 @
3089deda
theano/sandbox/symbolic_module.py
浏览文件 @
3089deda
...
@@ -184,7 +184,7 @@ def compile(smod, initial_values=None):
...
@@ -184,7 +184,7 @@ def compile(smod, initial_values=None):
print
p
print
p
reflected
[
thing
]
=
p
reflected
[
thing
]
=
p
else
:
else
:
reflected
[
thing
]
=
None
#
TODO: how to reflect derived resuls?
reflected
[
thing
]
=
None
#
TODO: how to reflect derived resuls?
elif
issymbolicmethod
(
thing
):
elif
issymbolicmethod
(
thing
):
reflected
[
thing
]
=
compiled_functions
[
thing
]
reflected
[
thing
]
=
compiled_functions
[
thing
]
else
:
else
:
...
@@ -332,7 +332,7 @@ if 0:
...
@@ -332,7 +332,7 @@ if 0:
x
=
T
.
dmatrix
(),
#our points, one point per row
x
=
T
.
dmatrix
(),
#our points, one point per row
w
=
T
.
dmatrix
(),
#first layer weights
w
=
T
.
dmatrix
(),
#first layer weights
b
=
T
.
dvector
(),
#first layer bias
b
=
T
.
dvector
(),
#first layer bias
**
kwargs
#
other things from logistic_regression
**
kwargs
#
other things from logistic_regression
):
):
hid
=
T
.
tanh
(
T
.
dot
(
x
,
w
)
+
b
)
hid
=
T
.
tanh
(
T
.
dot
(
x
,
w
)
+
b
)
if
top_part
:
if
top_part
:
...
@@ -353,7 +353,7 @@ if 0:
...
@@ -353,7 +353,7 @@ if 0:
if
0
:
if
0
:
class
SymbolicModule
(
object
):
class
SymbolicModule
(
object
):
name
=
"__no_name__"
#
name of this module
name
=
"__no_name__"
#
name of this module
variable_table
=
{}
#map strings (names) to Variables
variable_table
=
{}
#map strings (names) to Variables
method_table
=
{}
#map strings to compilable functions
method_table
=
{}
#map strings to compilable functions
...
@@ -385,8 +385,8 @@ if 0:
...
@@ -385,8 +385,8 @@ if 0:
b
=
T
.
dvector
(),
#first layer bias
b
=
T
.
dvector
(),
#first layer bias
v
=
T
.
dmatrix
(),
#second layer weights
v
=
T
.
dmatrix
(),
#second layer weights
c
=
T
.
dvector
(),
#second layer bias
c
=
T
.
dvector
(),
#second layer bias
step
=
T
.
dscalar
(),
#
step size for gradient descent
step
=
T
.
dscalar
(),
#
step size for gradient descent
l2_coef
=
T
.
dscalar
()
#
l2 regularization amount
l2_coef
=
T
.
dscalar
()
#
l2 regularization amount
):
):
"""Idea A:
"""Idea A:
"""
"""
...
...
theano/sandbox/test_theano_object.py
浏览文件 @
3089deda
...
@@ -19,7 +19,7 @@ class MyModule(TheanoObject):
...
@@ -19,7 +19,7 @@ class MyModule(TheanoObject):
super
(
MyModule
,
self
)
.
__init__
()
super
(
MyModule
,
self
)
.
__init__
()
self
.
a
=
self
.
symbolic_member
(
2
)
self
.
a
=
self
.
symbolic_member
(
2
)
self
.
b
=
self
.
symbolic_member
(
3
)
self
.
b
=
self
.
symbolic_member
(
3
)
self
.
c
=
100
#
a constant
self
.
c
=
100
#
a constant
self
.
d
=
[
self
.
symbolic_member
(
5
),
self
.
symbolic_member
(
6
)]
self
.
d
=
[
self
.
symbolic_member
(
5
),
self
.
symbolic_member
(
6
)]
self
.
e
=
[
'a'
,
self
.
symbolic_member
(
6
)]
self
.
e
=
[
'a'
,
self
.
symbolic_member
(
6
)]
...
@@ -46,11 +46,11 @@ def test_outputs():
...
@@ -46,11 +46,11 @@ def test_outputs():
assert
MM
.
add
(
5
)
==
12
assert
MM
.
add
(
5
)
==
12
assert
MM
.
b
.
get
()
==
4
assert
MM
.
b
.
get
()
==
4
MM
.
sub
(
3
)
MM
.
sub
(
3
)
assert
MM
.
b
.
get
()
==
1
#
test get()
assert
MM
.
b
.
get
()
==
1
#
test get()
assert
MM
.
add
(
5
)
==
9
#
test that b's container is shared between add and sub
assert
MM
.
add
(
5
)
==
9
#
test that b's container is shared between add and sub
MM
.
b
.
set
(
2
)
#
test set
MM
.
b
.
set
(
2
)
#
test set
assert
MM
.
b
.
get
()
==
2
#
test get()
assert
MM
.
b
.
get
()
==
2
#
test get()
assert
MM
.
add
(
5
)
==
10
#
test that b's container is shared between add and sub
assert
MM
.
add
(
5
)
==
10
#
test that b's container is shared between add and sub
@run
(
True
)
@run
(
True
)
def
test_submodule
():
def
test_submodule
():
...
@@ -59,7 +59,7 @@ def test_submodule():
...
@@ -59,7 +59,7 @@ def test_submodule():
assert
MM
.
add
(
5
)
==
8
assert
MM
.
add
(
5
)
==
8
MM
.
submodule
.
sub
(
7
)
MM
.
submodule
.
sub
(
7
)
assert
MM
.
submodule
.
b
.
get
()
==
-
3
assert
MM
.
submodule
.
b
.
get
()
==
-
3
assert
MM
.
use_submodule
(
0
)
==
-
2
#
self.a is 1 + self.submodule.b is -3
assert
MM
.
use_submodule
(
0
)
==
-
2
#
self.a is 1 + self.submodule.b is -3
@run
(
False
)
@run
(
False
)
...
...
theano/scalar/basic.py
浏览文件 @
3089deda
theano/scan_module/scan_op.py
浏览文件 @
3089deda
theano/scan_module/scan_opt.py
浏览文件 @
3089deda
theano/sparse/sandbox/test_sp.py
浏览文件 @
3089deda
...
@@ -265,7 +265,7 @@ class TestSP(unittest.TestCase):
...
@@ -265,7 +265,7 @@ class TestSP(unittest.TestCase):
kshp
=
((
3
,
3
),
(
2
,
2
))
kshp
=
((
3
,
3
),
(
2
,
2
))
nkerns
=
(
3
,
6
)
# per output pixel
nkerns
=
(
3
,
6
)
# per output pixel
ssizes
=
(((
1
,
1
),
(
2
,
2
)),)
ssizes
=
(((
1
,
1
),
(
2
,
2
)),)
convmodes
=
(
'full'
,)
#
'valid',)
convmodes
=
(
'full'
,)
#
'valid',)
# symbolic stuff
# symbolic stuff
kerns
=
[
tensor
.
dmatrix
(),
tensor
.
dmatrix
()]
kerns
=
[
tensor
.
dmatrix
(),
tensor
.
dmatrix
()]
...
...
theano/tensor/elemwise_cgen.py
浏览文件 @
3089deda
theano/tensor/nnet/tests/speed_test_conv.py
浏览文件 @
3089deda
...
@@ -111,14 +111,14 @@ def exec_multilayer_conv_nnet_old(conv_mode, ss, bsize, imshp, kshps, nkerns,
...
@@ -111,14 +111,14 @@ def exec_multilayer_conv_nnet_old(conv_mode, ss, bsize, imshp, kshps, nkerns,
time1
=
time
.
time
()
time1
=
time
.
time
()
for
i
in
range
(
repeat
):
for
i
in
range
(
repeat
):
hidval2_
=
propup2
(
imgval
,
w_flip
)
hidval2_
=
propup2
(
imgval
,
w_flip
)
hidval2
=
hidval2_
#
[:,:,0::ss[0],0::ss[1]]
hidval2
=
hidval2_
#
[:,:,0::ss[0],0::ss[1]]
tctot
+=
time
.
time
()
-
time1
tctot
+=
time
.
time
()
-
time1
if
conv_op_py
:
if
conv_op_py
:
time1
=
time
.
time
()
time1
=
time
.
time
()
for
i
in
range
(
repeat
):
for
i
in
range
(
repeat
):
hidval3_
=
propup3
(
imgval
,
w_flip
)
hidval3_
=
propup3
(
imgval
,
w_flip
)
hidval3
=
hidval3_
#
[:,:,0::ss[0],0::ss[1]]
hidval3
=
hidval3_
#
[:,:,0::ss[0],0::ss[1]]
tpytot
+=
time
.
time
()
-
time1
tpytot
+=
time
.
time
()
-
time1
assert
(
N
.
abs
(
hidval2
-
hidval3
)
<
1e-5
)
.
all
()
assert
(
N
.
abs
(
hidval2
-
hidval3
)
<
1e-5
)
.
all
()
else
:
else
:
...
@@ -183,7 +183,7 @@ def exec_multilayer_conv_nnet(conv_mode, ss, bsize, imshp, kshps, nkerns,
...
@@ -183,7 +183,7 @@ def exec_multilayer_conv_nnet(conv_mode, ss, bsize, imshp, kshps, nkerns,
time1
=
time
.
time
()
time1
=
time
.
time
()
for
i
in
range
(
repeat
):
for
i
in
range
(
repeat
):
hidval2_
=
propup2
(
imgval
,
w_flip
)
hidval2_
=
propup2
(
imgval
,
w_flip
)
hidval2
=
hidval2_
#
[:,:,0::ss[0],0::ss[1]]
hidval2
=
hidval2_
#
[:,:,0::ss[0],0::ss[1]]
tctot
+=
time
.
time
()
-
time1
tctot
+=
time
.
time
()
-
time1
imshp
=
tuple
(
outshp
)
imshp
=
tuple
(
outshp
)
...
@@ -197,11 +197,11 @@ def speed_multilayer_conv():
...
@@ -197,11 +197,11 @@ def speed_multilayer_conv():
# calculate the speed up of different combination of unroll
# calculate the speed up of different combination of unroll
# put the paramter to the same you will try.
# put the paramter to the same you will try.
validate
=
False
# we don't validate the result to have it much faster!
validate
=
False
# we don't validate the result to have it much faster!
repeat
=
3
repeat
=
3
verbose
=
1
verbose
=
1
unroll_batch
=
[
1
,
2
,
3
,
4
,
5
,
6
,
10
]
#
15, 30, 60 always much slower
unroll_batch
=
[
1
,
2
,
3
,
4
,
5
,
6
,
10
]
#
15, 30, 60 always much slower
unroll_kern
=
[
1
,
2
,
3
,
4
,
5
,
6
,
10
]
#
15, 30, 60 always much slower
unroll_kern
=
[
1
,
2
,
3
,
4
,
5
,
6
,
10
]
#
15, 30, 60 always much slower
#unroll_batch = [1,4,5]
#unroll_batch = [1,4,5]
#unroll_kern = [1,4,5]
#unroll_kern = [1,4,5]
#unroll_batch = [1,4]
#unroll_batch = [1,4]
...
@@ -209,10 +209,10 @@ def speed_multilayer_conv():
...
@@ -209,10 +209,10 @@ def speed_multilayer_conv():
unroll_patch
=
[
True
,
False
]
unroll_patch
=
[
True
,
False
]
bsize
=
60
# batch size
bsize
=
60
# batch size
imshp_start
=
(
1
,
48
,
48
)
#
un square shape to test more corner case.
imshp_start
=
(
1
,
48
,
48
)
#
un square shape to test more corner case.
kshps
=
([
11
,
12
],)
#
un square shape to test more corner case.
kshps
=
([
11
,
12
],)
#
un square shape to test more corner case.
nkerns
=
[
60
]
# per output pixel
nkerns
=
[
60
]
# per output pixel
ssizes
=
[(
1
,
1
),
]
#
(1,1)]#(2,2) bugged
ssizes
=
[(
1
,
1
),
]
#
(1,1)]#(2,2) bugged
convmodes
=
[
'valid'
,
'full'
]
convmodes
=
[
'valid'
,
'full'
]
do_convolve2
=
False
do_convolve2
=
False
a
=
T
.
dmatrix
()
a
=
T
.
dmatrix
()
...
@@ -246,9 +246,9 @@ def speed_multilayer_conv():
...
@@ -246,9 +246,9 @@ def speed_multilayer_conv():
if
unroll_b
==
1
and
unroll_k
==
1
:
if
unroll_b
==
1
and
unroll_k
==
1
:
# print "unroll 1/1",tctot
# print "unroll 1/1",tctot
worst
=
tctot
worst
=
tctot
timing
[
n_b
,
n_k
]
=
[
tctot
,
tpytot
,
ntot
]
#
[sum(tctot), sum(tpytot), sum(ntot)]
timing
[
n_b
,
n_k
]
=
[
tctot
,
tpytot
,
ntot
]
#
[sum(tctot), sum(tpytot), sum(ntot)]
if
not
t_
:
if
not
t_
:
t
=
timing
[:,
:,
0
,
:]
#
We select only the c timing.
t
=
timing
[:,
:,
0
,
:]
#
We select only the c timing.
else
:
else
:
t
=
t_
t
=
t_
t
=
N
.
asarray
(
t
)
t
=
N
.
asarray
(
t
)
...
...
theano/tensor/nnet/tests/test_nnet.py
浏览文件 @
3089deda
theano/tensor/signal/tests/test_downsample.py
浏览文件 @
3089deda
theano/tensor/tests/mlp_test.py
浏览文件 @
3089deda
theano/tensor/tests/test_blas_scipy.py
浏览文件 @
3089deda
...
@@ -43,19 +43,19 @@ class TestScipyGer(TestCase, TestOptimizationMixin):
...
@@ -43,19 +43,19 @@ class TestScipyGer(TestCase, TestOptimizationMixin):
f
=
self
.
function
([
self
.
A
,
self
.
x
,
self
.
y
],
f
=
self
.
function
([
self
.
A
,
self
.
x
,
self
.
y
],
self
.
A
+
tensor
.
outer
(
self
.
x
,
self
.
y
))
self
.
A
+
tensor
.
outer
(
self
.
x
,
self
.
y
))
self
.
assertFunctionContains
(
f
,
ScipyGer
(
destructive
=
False
))
self
.
assertFunctionContains
(
f
,
ScipyGer
(
destructive
=
False
))
self
.
run_f
(
f
)
#
DebugMode tests correctness
self
.
run_f
(
f
)
#
DebugMode tests correctness
def
test_A_plus_scaled_outer
(
self
):
def
test_A_plus_scaled_outer
(
self
):
f
=
self
.
function
([
self
.
A
,
self
.
x
,
self
.
y
],
f
=
self
.
function
([
self
.
A
,
self
.
x
,
self
.
y
],
self
.
A
+
0.1
*
tensor
.
outer
(
self
.
x
,
self
.
y
))
self
.
A
+
0.1
*
tensor
.
outer
(
self
.
x
,
self
.
y
))
self
.
assertFunctionContains
(
f
,
ScipyGer
(
destructive
=
False
))
self
.
assertFunctionContains
(
f
,
ScipyGer
(
destructive
=
False
))
self
.
run_f
(
f
)
#
DebugMode tests correctness
self
.
run_f
(
f
)
#
DebugMode tests correctness
def
test_scaled_A_plus_scaled_outer
(
self
):
def
test_scaled_A_plus_scaled_outer
(
self
):
f
=
self
.
function
([
self
.
A
,
self
.
x
,
self
.
y
],
f
=
self
.
function
([
self
.
A
,
self
.
x
,
self
.
y
],
0.2
*
self
.
A
+
0.1
*
tensor
.
outer
(
self
.
x
,
self
.
y
))
0.2
*
self
.
A
+
0.1
*
tensor
.
outer
(
self
.
x
,
self
.
y
))
self
.
assertFunctionContains
(
f
,
gemm_no_inplace
)
self
.
assertFunctionContains
(
f
,
gemm_no_inplace
)
self
.
run_f
(
f
)
#
DebugMode tests correctness
self
.
run_f
(
f
)
#
DebugMode tests correctness
class
TestBlasStridesScipy
(
TestBlasStrides
):
class
TestBlasStridesScipy
(
TestBlasStrides
):
mode
=
theano
.
compile
.
get_default_mode
()
mode
=
theano
.
compile
.
get_default_mode
()
...
...
theano/tensor/tests/test_mpi.py
浏览文件 @
3089deda
theano/tensor/tests/test_opt.py
浏览文件 @
3089deda
...
@@ -983,12 +983,12 @@ class test_fusion(unittest.TestCase):
...
@@ -983,12 +983,12 @@ class test_fusion(unittest.TestCase):
(
fx
-
theano
.
tensor
.
true_div
(
fy
,
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
(
fx
-
theano
.
tensor
.
true_div
(
fy
,
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
fyv
/
fzv
),
'float32'
),
fyv
,
fzv
),
1
,
fxv
-
(
fyv
/
fzv
),
'float32'
),
(
fx
-
theano
.
tensor
.
int_div
(
ix
*
100
,
iy
*
1000
),
(
fx
,
ix
,
(
fx
-
theano
.
tensor
.
int_div
(
ix
*
100
,
iy
*
1000
),
(
fx
,
ix
,
iy
),
(
fxv
,
ixv
,
iyv
),
1
,
fxv
-
((
ixv
*
100
)
//
(
iyv
*
1000
)),
{
'custom'
:
'float64'
,
'numpy+floatX'
:
config
.
floatX
,
'numpy'
:
'float64'
}),
#
40
iy
),
(
fxv
,
ixv
,
iyv
),
1
,
fxv
-
((
ixv
*
100
)
//
(
iyv
*
1000
)),
{
'custom'
:
'float64'
,
'numpy+floatX'
:
config
.
floatX
,
'numpy'
:
'float64'
}),
#
40
(
fx
-
(
fy
/
2
),
(
fx
,
fy
),
(
fxv
,
fyv
),
1
,
fxv
-
(
fyv
/
2
),
'float32'
),
(
fx
-
(
fy
/
2
),
(
fx
,
fy
),
(
fxv
,
fyv
),
1
,
fxv
-
(
fyv
/
2
),
'float32'
),
(
fx
-
(
fy
%
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
fyv
%
fzv
),
'float32'
),
(
fx
-
(
fy
%
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
fyv
%
fzv
),
'float32'
),
(
fx
-
(
fy
>
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
fyv
>
fzv
),
'float32'
),
(
fx
-
(
fy
>
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
fyv
>
fzv
),
'float32'
),
(
fx
-
(
fy
>=
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
fyv
>=
fzv
),
'float32'
),
(
fx
-
(
fy
>=
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
fyv
>=
fzv
),
'float32'
),
(
fx
-
(
fy
<
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
fyv
<
fzv
),
'float32'
),
#
45
(
fx
-
(
fy
<
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
fyv
<
fzv
),
'float32'
),
#
45
(
fx
-
(
fy
<=
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
fyv
<=
fzv
),
'float32'
),
(
fx
-
(
fy
<=
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
fyv
<=
fzv
),
'float32'
),
(
fx
-
T
.
eq
(
fy
,
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
(
fx
-
T
.
eq
(
fy
,
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
(
fyv
==
fzv
),
'float32'
),
fyv
==
fzv
),
'float32'
),
...
@@ -997,7 +997,7 @@ class test_fusion(unittest.TestCase):
...
@@ -997,7 +997,7 @@ class test_fusion(unittest.TestCase):
(
fx
-
fy
+
tensor
.
tan
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
(
fx
-
fy
+
tensor
.
tan
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
fyv
+
numpy
.
tan
(
fzv
),
'float32'
),
fxv
-
fyv
+
numpy
.
tan
(
fzv
),
'float32'
),
(
fx
-
fy
+
tensor
.
tanh
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
(
fx
-
fy
+
tensor
.
tanh
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
fyv
+
numpy
.
tanh
(
fzv
),
'float32'
),
#
50
fxv
-
fyv
+
numpy
.
tanh
(
fzv
),
'float32'
),
#
50
(
fx
-
fy
+
tensor
.
sin
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
(
fx
-
fy
+
tensor
.
sin
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
fyv
+
numpy
.
sin
(
fzv
),
'float32'
),
fxv
-
fyv
+
numpy
.
sin
(
fzv
),
'float32'
),
(
fx
-
fy
+
tensor
.
sinh
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
(
fx
-
fy
+
tensor
.
sinh
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
...
@@ -1007,7 +1007,7 @@ class test_fusion(unittest.TestCase):
...
@@ -1007,7 +1007,7 @@ class test_fusion(unittest.TestCase):
(
fx
-
fy
+
theano
.
tensor
.
sqrt
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
(
fx
-
fy
+
theano
.
tensor
.
sqrt
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
fyv
+
numpy
.
sqrt
(
fzv
),
'float32'
),
fzv
),
1
,
fxv
-
fyv
+
numpy
.
sqrt
(
fzv
),
'float32'
),
(
fx
-
fy
+
theano
.
tensor
.
inv
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
(
fx
-
fy
+
theano
.
tensor
.
inv
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
fyv
+
(
1
/
fzv
),
'float32'
),
#
55
fzv
),
1
,
fxv
-
fyv
+
(
1
/
fzv
),
'float32'
),
#
55
(
fx
-
fy
+
theano
.
tensor
.
neg
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
(
fx
-
fy
+
theano
.
tensor
.
neg
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
fxv
-
fyv
+
(
-
fzv
),
'float32'
),
fzv
),
1
,
fxv
-
fyv
+
(
-
fzv
),
'float32'
),
(
fx
-
fy
+
theano
.
tensor
.
round
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
(
fx
-
fy
+
theano
.
tensor
.
round
(
fz
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
...
@@ -1018,7 +1018,7 @@ class test_fusion(unittest.TestCase):
...
@@ -1018,7 +1018,7 @@ class test_fusion(unittest.TestCase):
(
fx
-
theano
.
tensor
.
or_
(
iy
,
iz
),
(
fx
,
iy
,
iz
),
(
fxv
,
iyv
,
(
fx
-
theano
.
tensor
.
or_
(
iy
,
iz
),
(
fx
,
iy
,
iz
),
(
fxv
,
iyv
,
izv
),
1
,
fxv
-
(
iyv
|
izv
),
{
'custom'
:
'float64'
,
'numpy+floatX'
:
config
.
floatX
,
'numpy'
:
'float64'
}),
izv
),
1
,
fxv
-
(
iyv
|
izv
),
{
'custom'
:
'float64'
,
'numpy+floatX'
:
config
.
floatX
,
'numpy'
:
'float64'
}),
(
fx
-
theano
.
tensor
.
xor
(
iy
,
iz
),
(
fx
,
iy
,
iz
),
(
fxv
,
iyv
,
(
fx
-
theano
.
tensor
.
xor
(
iy
,
iz
),
(
fx
,
iy
,
iz
),
(
fxv
,
iyv
,
izv
),
1
,
fxv
-
(
iyv
^
izv
),
{
'custom'
:
'float64'
,
'numpy+floatX'
:
config
.
floatX
,
'numpy'
:
'float64'
}),
#
60
izv
),
1
,
fxv
-
(
iyv
^
izv
),
{
'custom'
:
'float64'
,
'numpy+floatX'
:
config
.
floatX
,
'numpy'
:
'float64'
}),
#
60
(
fx
-
theano
.
tensor
.
and_
(
iy
,
iz
),
(
fx
,
iy
,
iz
),
(
fxv
,
iyv
,
(
fx
-
theano
.
tensor
.
and_
(
iy
,
iz
),
(
fx
,
iy
,
iz
),
(
fxv
,
iyv
,
izv
),
1
,
fxv
-
(
iyv
&
izv
),
{
'custom'
:
'float64'
,
'numpy+floatX'
:
config
.
floatX
,
'numpy'
:
'float64'
}),
izv
),
1
,
fxv
-
(
iyv
&
izv
),
{
'custom'
:
'float64'
,
'numpy+floatX'
:
config
.
floatX
,
'numpy'
:
'float64'
}),
(
fx
-
theano
.
tensor
.
invert
(
iy
),
(
fx
,
iy
),
(
fxv
,
iyv
),
1
,
(
fx
-
theano
.
tensor
.
invert
(
iy
),
(
fx
,
iy
),
(
fxv
,
iyv
),
1
,
...
@@ -1029,9 +1029,9 @@ class test_fusion(unittest.TestCase):
...
@@ -1029,9 +1029,9 @@ class test_fusion(unittest.TestCase):
(
theano
.
tensor
.
pow
(
fx
*
fy
+
fz
,
fx
*
fy
),
(
fx
,
fy
,
fz
),
(
fxv
,
(
theano
.
tensor
.
pow
(
fx
*
fy
+
fz
,
fx
*
fy
),
(
fx
,
fy
,
fz
),
(
fxv
,
fyv
,
fzv
),
1
,
numpy
.
power
(
fxv
*
fyv
+
fzv
,
fxv
*
fyv
),
'float32'
),
fyv
,
fzv
),
1
,
numpy
.
power
(
fxv
*
fyv
+
fzv
,
fxv
*
fyv
),
'float32'
),
(
fv
+
fy
**
fz
,
(
fv
,
fy
,
fz
),
(
fvv
,
fyv
,
fzv
),
2
,
fvv
+
fyv
**
fzv
,
(
fv
+
fy
**
fz
,
(
fv
,
fy
,
fz
),
(
fvv
,
fyv
,
fzv
),
2
,
fvv
+
fyv
**
fzv
,
'float32'
),
#
fused with a dimshuffle #65
'float32'
),
#
fused with a dimshuffle #65
(
fv
-
fy
+
tensor
.
tanh
(
fz
),
(
fv
,
fy
,
fz
),
(
fvv
,
fyv
,
fzv
),
2
,
(
fv
-
fy
+
tensor
.
tanh
(
fz
),
(
fv
,
fy
,
fz
),
(
fvv
,
fyv
,
fzv
),
2
,
fvv
-
fyv
+
numpy
.
tanh
(
fzv
),
'float32'
),
#
fused with a dimshuffle
fvv
-
fyv
+
numpy
.
tanh
(
fzv
),
'float32'
),
#
fused with a dimshuffle
# Cases where the same input is reused many times.
# Cases where the same input is reused many times.
(
theano
.
tensor
.
mul
(
fx
,
fx
,
fx
,
fx
),
(
fx
,),
(
fxv
,),
1
,
fxv
*
(
theano
.
tensor
.
mul
(
fx
,
fx
,
fx
,
fx
),
(
fx
,),
(
fxv
,),
1
,
fxv
*
...
...
theano/tensor/tests/test_shared_randomstreams.py
浏览文件 @
3089deda
...
@@ -43,7 +43,7 @@ class T_SharedRandomStreams(unittest.TestCase):
...
@@ -43,7 +43,7 @@ class T_SharedRandomStreams(unittest.TestCase):
gn_val0
=
gn
()
gn_val0
=
gn
()
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
# print fn_val0
# print fn_val0
numpy_val0
=
rng
.
uniform
(
size
=
(
2
,
2
))
numpy_val0
=
rng
.
uniform
(
size
=
(
2
,
2
))
...
@@ -86,7 +86,7 @@ class T_SharedRandomStreams(unittest.TestCase):
...
@@ -86,7 +86,7 @@ class T_SharedRandomStreams(unittest.TestCase):
random
.
seed
(
utt
.
fetch_seed
())
random
.
seed
(
utt
.
fetch_seed
())
rng
=
numpy
.
random
.
RandomState
()
rng
=
numpy
.
random
.
RandomState
()
rng
.
set_state
(
random
[
out
.
rng
]
.
get_state
())
#
tests getitem
rng
.
set_state
(
random
[
out
.
rng
]
.
get_state
())
#
tests getitem
fn_val0
=
fn
()
fn_val0
=
fn
()
fn_val1
=
fn
()
fn_val1
=
fn
()
...
@@ -143,7 +143,7 @@ class T_SharedRandomStreams(unittest.TestCase):
...
@@ -143,7 +143,7 @@ class T_SharedRandomStreams(unittest.TestCase):
fn_val1
=
fn
()
fn_val1
=
fn
()
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
numpy_val0
=
rng
.
uniform
(
-
1
,
1
,
size
=
(
2
,
2
))
numpy_val0
=
rng
.
uniform
(
-
1
,
1
,
size
=
(
2
,
2
))
numpy_val1
=
rng
.
uniform
(
-
1
,
1
,
size
=
(
2
,
2
))
numpy_val1
=
rng
.
uniform
(
-
1
,
1
,
size
=
(
2
,
2
))
...
@@ -160,7 +160,7 @@ class T_SharedRandomStreams(unittest.TestCase):
...
@@ -160,7 +160,7 @@ class T_SharedRandomStreams(unittest.TestCase):
fn_val1
=
fn
()
fn_val1
=
fn
()
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
numpy_val0
=
rng
.
normal
(
-
1
,
2
,
size
=
(
2
,
2
))
numpy_val0
=
rng
.
normal
(
-
1
,
2
,
size
=
(
2
,
2
))
numpy_val1
=
rng
.
normal
(
-
1
,
2
,
size
=
(
2
,
2
))
numpy_val1
=
rng
.
normal
(
-
1
,
2
,
size
=
(
2
,
2
))
...
@@ -176,7 +176,7 @@ class T_SharedRandomStreams(unittest.TestCase):
...
@@ -176,7 +176,7 @@ class T_SharedRandomStreams(unittest.TestCase):
fn_val1
=
fn
()
fn_val1
=
fn
()
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
numpy_val0
=
rng
.
random_integers
(
-
5
,
5
,
size
=
(
20
,
20
))
numpy_val0
=
rng
.
random_integers
(
-
5
,
5
,
size
=
(
20
,
20
))
numpy_val1
=
rng
.
random_integers
(
-
5
,
5
,
size
=
(
20
,
20
))
numpy_val1
=
rng
.
random_integers
(
-
5
,
5
,
size
=
(
20
,
20
))
...
@@ -198,7 +198,7 @@ class T_SharedRandomStreams(unittest.TestCase):
...
@@ -198,7 +198,7 @@ class T_SharedRandomStreams(unittest.TestCase):
fn_val1
=
fn
()
fn_val1
=
fn
()
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
numpy_val0
=
rng
.
choice
(
10
,
(
11
,
8
),
True
,
None
)
numpy_val0
=
rng
.
choice
(
10
,
(
11
,
8
),
True
,
None
)
numpy_val1
=
rng
.
choice
(
10
,
(
11
,
8
),
True
,
None
)
numpy_val1
=
rng
.
choice
(
10
,
(
11
,
8
),
True
,
None
)
...
@@ -215,7 +215,7 @@ class T_SharedRandomStreams(unittest.TestCase):
...
@@ -215,7 +215,7 @@ class T_SharedRandomStreams(unittest.TestCase):
fn_val1
=
fn
()
fn_val1
=
fn
()
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
numpy_val0
=
rng
.
poisson
(
lam
=
5
,
size
=
(
11
,
8
))
numpy_val0
=
rng
.
poisson
(
lam
=
5
,
size
=
(
11
,
8
))
numpy_val1
=
rng
.
poisson
(
lam
=
5
,
size
=
(
11
,
8
))
numpy_val1
=
rng
.
poisson
(
lam
=
5
,
size
=
(
11
,
8
))
...
@@ -232,7 +232,7 @@ class T_SharedRandomStreams(unittest.TestCase):
...
@@ -232,7 +232,7 @@ class T_SharedRandomStreams(unittest.TestCase):
fn_val1
=
fn
()
fn_val1
=
fn
()
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
# rng.permutation outputs one vector at a time, so we iterate.
# rng.permutation outputs one vector at a time, so we iterate.
numpy_val0
=
numpy
.
asarray
([
rng
.
permutation
(
10
)
for
i
in
range
(
20
)])
numpy_val0
=
numpy
.
asarray
([
rng
.
permutation
(
10
)
for
i
in
range
(
20
)])
...
@@ -251,7 +251,7 @@ class T_SharedRandomStreams(unittest.TestCase):
...
@@ -251,7 +251,7 @@ class T_SharedRandomStreams(unittest.TestCase):
fn_val1
=
fn
()
fn_val1
=
fn
()
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng_seed
=
numpy
.
random
.
RandomState
(
utt
.
fetch_seed
())
.
randint
(
2
**
30
)
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
rng
=
numpy
.
random
.
RandomState
(
int
(
rng_seed
))
#
int() is for 32bit
numpy_val0
=
rng
.
multinomial
(
1
,
[
0.1
]
*
10
,
size
=
(
4
,
4
))
numpy_val0
=
rng
.
multinomial
(
1
,
[
0.1
]
*
10
,
size
=
(
4
,
4
))
numpy_val1
=
rng
.
multinomial
(
1
,
[
0.1
]
*
10
,
size
=
(
4
,
4
))
numpy_val1
=
rng
.
multinomial
(
1
,
[
0.1
]
*
10
,
size
=
(
4
,
4
))
...
...
theano/tensor/tests/test_sharedvar.py
浏览文件 @
3089deda
...
@@ -97,7 +97,7 @@ def makeSharedTester(shared_constructor_,
...
@@ -97,7 +97,7 @@ def makeSharedTester(shared_constructor_,
values_to_div
=
.
5
values_to_div
=
.
5
if
self
.
op_by_matrix
:
if
self
.
op_by_matrix
:
values_to_div
=
self
.
internal_type
(
numpy
.
ones
(
x
.
shape
,
dtype
=
dtype
)
/
2
)
#
supported for cudandarray, but not ndarray.
values_to_div
=
self
.
internal_type
(
numpy
.
ones
(
x
.
shape
,
dtype
=
dtype
)
/
2
)
#
supported for cudandarray, but not ndarray.
assert
self
.
test_internal_type
(
values_to_div
)
assert
self
.
test_internal_type
(
values_to_div
)
x
/=
values_to_div
x
/=
values_to_div
total_val_2
=
total_func
()
total_val_2
=
total_func
()
...
@@ -193,7 +193,7 @@ def makeSharedTester(shared_constructor_,
...
@@ -193,7 +193,7 @@ def makeSharedTester(shared_constructor_,
# supported for cudandarray, but not ndarray.
# supported for cudandarray, but not ndarray.
values_to_div
=
self
.
internal_type
(
values_to_div
=
self
.
internal_type
(
numpy
.
ones
(
x
.
shape
,
dtype
=
dtype
)
/
2
)
numpy
.
ones
(
x
.
shape
,
dtype
=
dtype
)
/
2
)
x
/=
values_to_div
#
supported by ndarray and CudaNdarray
x
/=
values_to_div
#
supported by ndarray and CudaNdarray
# this is not required by the contract but it is a feature we can
# this is not required by the contract but it is a feature we can
# implement for some type of SharedVariable.
# implement for some type of SharedVariable.
...
@@ -202,7 +202,7 @@ def makeSharedTester(shared_constructor_,
...
@@ -202,7 +202,7 @@ def makeSharedTester(shared_constructor_,
x
=
x_shared
.
get_value
(
borrow
=
False
,
return_internal_type
=
True
)
x
=
x_shared
.
get_value
(
borrow
=
False
,
return_internal_type
=
True
)
assert
self
.
test_internal_type
(
x
)
assert
self
.
test_internal_type
(
x
)
assert
x
is
not
x_shared
.
container
.
value
assert
x
is
not
x_shared
.
container
.
value
x
/=
values_to_div
#
supported by ndarray and CudaNdarray
x
/=
values_to_div
#
supported by ndarray and CudaNdarray
# this is required by the contract
# this is required by the contract
assert
not
numpy
.
allclose
(
self
.
ref_fct
(
x
),
total_func
())
assert
not
numpy
.
allclose
(
self
.
ref_fct
(
x
),
total_func
())
...
@@ -251,7 +251,7 @@ def makeSharedTester(shared_constructor_,
...
@@ -251,7 +251,7 @@ def makeSharedTester(shared_constructor_,
# test if that theano shared variable optimize set_value(borrow=True)
# test if that theano shared variable optimize set_value(borrow=True)
get_x
=
x_shared
.
get_value
(
borrow
=
True
)
get_x
=
x_shared
.
get_value
(
borrow
=
True
)
assert
get_x
is
not
x_orig
#
borrow=False to shared_constructor
assert
get_x
is
not
x_orig
#
borrow=False to shared_constructor
get_x
/=
values_to_div
get_x
/=
values_to_div
x_shared
.
set_value
(
get_x
,
borrow
=
True
)
x_shared
.
set_value
(
get_x
,
borrow
=
True
)
x
=
x_shared
.
get_value
(
borrow
=
True
)
x
=
x_shared
.
get_value
(
borrow
=
True
)
...
@@ -263,10 +263,10 @@ def makeSharedTester(shared_constructor_,
...
@@ -263,10 +263,10 @@ def makeSharedTester(shared_constructor_,
# test optimized get set value on the gpu(don't pass data to the cpu)
# test optimized get set value on the gpu(don't pass data to the cpu)
get_x
=
x_shared
.
get_value
(
borrow
=
True
,
return_internal_type
=
True
)
get_x
=
x_shared
.
get_value
(
borrow
=
True
,
return_internal_type
=
True
)
assert
get_x
is
not
x_orig
#
borrow=False to shared_constructor
assert
get_x
is
not
x_orig
#
borrow=False to shared_constructor
assert
self
.
test_internal_type
(
get_x
)
assert
self
.
test_internal_type
(
get_x
)
get_x
/=
values_to_div
#
supported by ndarray and CudaNdarray
get_x
/=
values_to_div
#
supported by ndarray and CudaNdarray
assert
self
.
test_internal_type
(
get_x
)
assert
self
.
test_internal_type
(
get_x
)
x_shared
.
set_value
(
get_x
,
borrow
=
True
)
x_shared
.
set_value
(
get_x
,
borrow
=
True
)
x
=
x_shared
.
get_value
(
borrow
=
True
,
return_internal_type
=
True
)
x
=
x_shared
.
get_value
(
borrow
=
True
,
return_internal_type
=
True
)
...
@@ -316,7 +316,7 @@ def makeSharedTester(shared_constructor_,
...
@@ -316,7 +316,7 @@ def makeSharedTester(shared_constructor_,
if
dtype
is
None
:
if
dtype
is
None
:
dtype
=
theano
.
config
.
floatX
dtype
=
theano
.
config
.
floatX
shp
=
(
100
/
4
,
1024
)
#
100KB
shp
=
(
100
/
4
,
1024
)
#
100KB
x
=
numpy
.
zeros
(
shp
,
dtype
=
dtype
)
x
=
numpy
.
zeros
(
shp
,
dtype
=
dtype
)
x
=
self
.
cast_value
(
x
)
x
=
self
.
cast_value
(
x
)
...
...
theano/tests/test_tutorial.py
浏览文件 @
3089deda
...
@@ -776,7 +776,7 @@ class T_examples(unittest.TestCase):
...
@@ -776,7 +776,7 @@ class T_examples(unittest.TestCase):
p_1
=
1
/
(
1
+
T
.
exp
(
-
T
.
dot
(
x
,
w
)
-
b
))
# Probability that target = 1
p_1
=
1
/
(
1
+
T
.
exp
(
-
T
.
dot
(
x
,
w
)
-
b
))
# Probability that target = 1
prediction
=
p_1
>
0.5
# The prediction thresholded
prediction
=
p_1
>
0.5
# The prediction thresholded
xent
=
-
y
*
T
.
log
(
p_1
)
-
(
1
-
y
)
*
T
.
log
(
1
-
p_1
)
# Cross-entropy loss function
xent
=
-
y
*
T
.
log
(
p_1
)
-
(
1
-
y
)
*
T
.
log
(
1
-
p_1
)
# Cross-entropy loss function
cost
=
xent
.
mean
()
+
0.01
*
(
w
**
2
)
.
sum
()
# The cost to minimize
cost
=
xent
.
mean
()
+
0.01
*
(
w
**
2
)
.
sum
()
# The cost to minimize
gw
,
gb
=
T
.
grad
(
cost
,
[
w
,
b
])
# Compute the gradient of the cost
gw
,
gb
=
T
.
grad
(
cost
,
[
w
,
b
])
# Compute the gradient of the cost
# (we shall return to this in a
# (we shall return to this in a
# following section of this tutorial)
# following section of this tutorial)
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论