將名稱分配給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