2016-06-19 5 views
0

神経ネットを自分自身で教えようとすると、私はdeeplearning.netのTheanoチュートリアルを通して自分のやり方で作業を始めました。チュートリアルのすべてのコード行をそのままコピーして貼り付けたので、私が期待していなかったエラーが発生しました。私は間違っているものは何か小さいものと確信しています、私はそれを見ているだけですが、どんな助けも大歓迎です。おかげTheanoチュートリアル:UnusedInputError:theano.function

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'. 

答えて

0

私はtheanoでも新たなんだ、と私はこれに走りました。これはチュートリアルのバグのようです。エラーメッセージは、on_unused_inputパラメーターを使用してエラーを抑制することを示唆していますが、これはcopyのキーワード引数ではありません。どうやらそれはfunctionに渡されなければならない。アキュムレータは、このように作成されたのであれば:

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

、エラーが表示されなくなります。 (これは、元の関数のプロパティを変更しなければならない、理想的ではないソリューションのようです。