将名称分配给Theano对象有助于调试。例如,theano.printing.debugprint
将在其输出中包含名称(如果存在);这可以使得更容易理解复杂的计算图。
你也可以给名称输入变量(例如x=theano.tensor.scalar('x')
)和功能(例如,f=theano.function(inputs, outputs, name='f')
。
的theano.printing.debugprint
输出可以通过命名节点,其内容你不需要看到和使用stop_on_name
参数限制在同步
保持Python的名称和Theano名可以是乏味且容易出错在某些情况下,你可能会想用的功能,如:
def name_node(variable, variable_names):
for name, query_variable in variable_names.iteritems():
if query_variable is variable:
variable.name = name
return variable
def name_nodes(variables, variable_names):
if not isinstance(variables, (tuple, list)):
return name_node(variables, variable_names)
for variable in variables:
for name, query_variable in variable_names.iteritems():
if query_variable is variable:
variable.name = name
return variables
在一个象征性的功能,您可以用这些像这样:
def create_graph(w_filename):
x = T.scalar()
w = theano.shared(numpy.load(w_filename))
y = T.tanh(theano.dot(x, w))
return name_nodes([x, w, y], locals())
这是一个有点Python的黑客攻击,并不会适用于所有情况。
你可以给一个简单的例子,使用名称是非常有用的吗?谢谢 – hunch