Theano教程:UnusedInputError:theano.function

时间:2016-06-19 20:04:59

标签: python theano

尝试自学神经网络,我已经开始在deeplearning.net上通过Theano教程。我刚刚遇到一个我没想到的错误,因为我已经从教程中逐字复制并粘贴了每一行代码。我确定什么是错的是小事我只是看着它但是任何帮助都会非常感激。谢谢

http://deeplearning.net/software/theano/tutorial/examples.html#copying-functions

import theano
import theano.tensor as T
state = theano.shared(0)
inc = T.iscalar('inc')
accumulator = theano.function([inc], state, updates=[(state, state+inc)])
accumulator(10)
print(state.get_value())

new_state = theano.shared(0)
new_accumulator = accumulator.copy(swap={state:new_state})
new_accumulator(100)

print(state.get_value())
print(new_state.get_value())

null_accumulator = accumulator.copy(delete_updates=True)


---------------------------------------------------------------------------
UnusedInputError                          Traceback (most recent call last)
<ipython-input-20-5d1acb597345> in <module>()
----> 1 null_accumulator = accumulator.copy(delete_updates=True)

/home/mcamp/anaconda3/lib/python3.5/site-packages/theano/compile/function_module.py in copy(self, share_memory, swap, delete_updates, name, profile)
    719                                 # can contain inplace. DebugMode check
    720                                 # that.
--> 721                                 accept_inplace=True,
    722                                 ).create(input_storage,
    723                                          storage_map=new_storage_map)

/home/mcamp/anaconda3/lib/python3.5/site-packages/theano/compile/function_module.py in __init__(self, inputs, outputs, mode, accept_inplace, function_builder, profile, on_unused_input, fgraph, output_keys)
   1413 
   1414         # Check if some input variables are unused
-> 1415         self._check_unused_inputs(inputs, outputs, on_unused_input)
   1416 
   1417         # Make a list of (SymbolicInput|SymblicInputKits, indices,

/home/mcamp/anaconda3/lib/python3.5/site-packages/theano/compile/function_module.py in _check_unused_inputs(self, inputs, outputs, on_unused_input)
   1551                 elif on_unused_input == 'raise':
   1552                     raise UnusedInputError(msg % (inputs.index(i),
-> 1553                                                   i.variable, err_msg))
   1554                 else:
   1555                     raise ValueError("Invalid value for keyword "

UnusedInputError: theano.function was asked to create a function computing outputs given certain inputs, but the provided input variable at index 0 is not part of the computational graph needed to compute the outputs: inc.
To make this error into a warning, you can pass the parameter on_unused_input='warn' to theano.function. To disable it completely, use on_unused_input='ignore'.

1 个答案:

答案 0 :(得分:0)

我也是theano的新人,我刚刚碰到了这个。这似乎是教程中的一个错误。错误消息建议使用参数on_unused_input来抑制错误,但这不是copy的关键字参数。显然它必须传递给function。因此,如果累积器是这样创建的:

accumulator = theano.function([inc], state,
    updates=[(state, state+inc)], on_unused_input='ignore')

然后错误就消失了。 (在我看来,这似乎是一个非理想的解决方案,必须改变原始函数的属性。)

相关问题