Theano tutorial: UnusedInputError: theano.function

Theano tutorial: UnusedInputError: theano.function

为了自学神经网络,我已经开始在 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'.

我也是 theano 的新手,我只是 运行 了解这个。这似乎是教程中的错误。错误消息建议使用参数 on_unused_input 来抑制错误,但这不是 copy. Apparently it has to be passed to function 的关键字参数。所以如果累加器是这样创建的:

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

然后错误消失了。 (在我看来,这似乎是一个不理想的解决方案,必须更改原始功能的 属性。)