Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pytensor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
testgroup
pytensor
Commits
29d37ffc
提交
29d37ffc
authored
6月 26, 2013
作者:
Frederic
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
better fix to gh-1133. This do not change the interface to make_node in case of error.
上级
1074b68d
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
19 行增加
和
18 行删除
+19
-18
basic.py
theano/tensor/basic.py
+18
-11
elemwise.py
theano/tensor/elemwise.py
+1
-7
没有找到文件。
theano/tensor/basic.py
浏览文件 @
29d37ffc
...
...
@@ -69,6 +69,13 @@ class ShapeError(Exception):
pass
class
AsTensorError
(
Exception
):
"""Raised when as_tensor_variable isn't able to create a
TensorVariable.
"""
pass
def
check_equal_numpy
(
x
,
y
):
"""
Returns True iff x and y are equal (checks the dtype and
...
...
@@ -151,8 +158,8 @@ def as_tensor_variable(x, name=None, ndim=None):
not possible.
:Exceptions:
- `ValueError`: raised if an `Apply` with
no default
output is fetched
- `
Type
Error`: raised if `x` cannot be converted to a TensorType Variable
- `ValueError`: raised if an `Apply` with
more then one
output is fetched
- `
AsTensor
Error`: raised if `x` cannot be converted to a TensorType Variable
"""
if
hasattr
(
x
,
'_as_TensorVariable'
):
...
...
@@ -171,7 +178,7 @@ def as_tensor_variable(x, name=None, ndim=None):
x
=
tensor_from_scalar
(
x
)
if
not
isinstance
(
x
.
type
,
TensorType
):
raise
Type
Error
(
raise
AsTensor
Error
(
"Variable type field must be a TensorType."
,
x
,
x
.
type
)
if
ndim
is
None
:
...
...
@@ -194,7 +201,7 @@ def as_tensor_variable(x, name=None, ndim=None):
pass
if
isinstance
(
x
,
bool
):
raise
Type
Error
(
raise
AsTensor
Error
(
"Cannot cast True or False as a tensor variable. Please use 1 or "
"0. This error might be caused by using the == operator on "
"Variables. v == w does not do what you think it does, "
...
...
@@ -207,7 +214,7 @@ def as_tensor_variable(x, name=None, ndim=None):
str_x
=
str
(
x
)
except
Exception
:
str_x
=
repr
(
x
)
raise
Type
Error
(
"Cannot convert
%
s to TensorType"
%
str_x
,
type
(
x
))
raise
AsTensor
Error
(
"Cannot convert
%
s to TensorType"
%
str_x
,
type
(
x
))
# this has a different name, because _as_tensor_variable is the
# function which ops use to upcast their arguments... this
...
...
@@ -1586,7 +1593,7 @@ class _tensor_py_operators:
# Evidently, we need to catch NotImplementedError
# TypeError from as_tensor_variable are caught in Elemwise.make_node
# Oterwise TensorVariable * SparseVariable won't work!
except
NotImplementedError
:
except
(
NotImplementedError
,
AsTensorError
)
:
# We must return NotImplemented and not an
# NotImplementedError or raise an NotImplementedError.
# That way python will give a good error message like this
...
...
@@ -1599,7 +1606,7 @@ class _tensor_py_operators:
# and the return value in that case
try
:
return
sub
(
self
,
other
)
except
NotImplementedError
:
except
(
NotImplementedError
,
AsTensorError
)
:
return
NotImplemented
def
__mul__
(
self
,
other
):
...
...
@@ -1607,7 +1614,7 @@ class _tensor_py_operators:
# and the return value in that case
try
:
return
mul
(
self
,
other
)
except
NotImplementedError
:
except
(
NotImplementedError
,
AsTensorError
)
:
return
NotImplemented
def
__div__
(
self
,
other
):
...
...
@@ -1619,7 +1626,7 @@ class _tensor_py_operators:
# This is to raise the exception that occurs when trying to divide
# two integer arrays (currently forbidden).
raise
except
NotImplementedError
:
except
(
NotImplementedError
,
AsTensorError
)
:
return
NotImplemented
if
PY3
:
__truediv__
=
__div__
...
...
@@ -1629,7 +1636,7 @@ class _tensor_py_operators:
# adn the return value in that case
try
:
return
pow
(
self
,
other
)
except
NotImplementedError
:
except
(
NotImplementedError
,
AsTensorError
)
:
return
NotImplemented
def
__mod__
(
self
,
other
):
...
...
@@ -1641,7 +1648,7 @@ class _tensor_py_operators:
# This is to raise the exception that occurs when trying to compute
# x % y with either x or y a complex number.
raise
except
NotImplementedError
:
except
(
NotImplementedError
,
AsTensorError
)
:
return
NotImplemented
def
__truediv__
(
self
,
other
):
...
...
theano/tensor/elemwise.py
浏览文件 @
29d37ffc
...
...
@@ -530,13 +530,7 @@ class Elemwise(Op):
is left-completed to the greatest number of dimensions with 1s
using DimShuffle.
"""
try
:
inputs
=
map
(
as_tensor_variable
,
inputs
)
except
TypeError
:
# __{add,sub,mul,div,mod,pow}__
# need to return NotImplemented to make
# TensorVariable op SparseVariable work.
return
NotImplemented
inputs
=
map
(
as_tensor_variable
,
inputs
)
shadow
=
self
.
scalar_op
.
make_node
(
*
[
Scalar
(
dtype
=
i
.
type
.
dtype
)()
for
i
in
inputs
])
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论