提交 d07ce6a9 authored 作者: Frederic's avatar Frederic

Allow warn_float64 to be ignore, warn, raise or pdb.

上级 e42c3a8c
......@@ -28,7 +28,7 @@ AddConfigVar('warn_float64',
"If True, warn when a tensor variable with float64 dtype is"
" created. They can't be run on the GPU with the current(old)"
" gpu back-end and are slow with gamer GPUs.",
BoolParam(False),
EnumStr('ignore', 'warn', 'raise', 'pdb'),
in_c_key=False,
)
......
import copy
import pdb
import sys
import traceback as tb
import warnings
import numpy
......@@ -579,28 +582,31 @@ class TensorVariable(_tensor_py_operators, Variable):
def __init__(self, type, owner=None, index=None, name=None):
super(TensorVariable, self).__init__(type, owner=owner,
index=index, name=name)
if (config.warn_float64 and type.dtype == 'float64'):
# Get the user stack. We don't want function inside the
# tensor and gof directory to be shown to the user.
import traceback as tb
x = tb.extract_stack()
nb_rm = 0
while x:
file_path = x[-1][0]
rm = False
for p in ["theano/tensor/",
"theano/gof/"]:
if p in file_path:
x = x[:-1]
nb_rm += 1
rm = True
if not rm:
break
warnings.warn(
'Warning, you are creating a TensorVariable '
'with float64 dtype. You requested this warning via '
'the Theano flag warn_float64=True.', stacklevel=1 + nb_rm)
if (config.warn_float64 != 'ignore' and type.dtype == 'float64'):
msg = ('You are creating a TensorVariable '
'with float64 dtype. You requested this warning via '
'the Theano flag warn_float64=True.')
if config.warn_float64 == "warn":
# Get the user stack. We don't want function inside the
# tensor and gof directory to be shown to the user.
x = tb.extract_stack()
nb_rm = 0
while x:
file_path = x[-1][0]
rm = False
for p in ["theano/tensor/",
"theano/gof/"]:
if p in file_path:
x = x[:-1]
nb_rm += 1
rm = True
if not rm:
break
warnings.warn(msg, stacklevel=1 + nb_rm)
elif config.warn_float64 == "raise":
raise Exception(msg)
elif config.warn_float64 == 'pdb':
import pdb;pdb.set_trace()
TensorType.Variable = TensorVariable
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论