2016-06-19 44 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') 

然後錯誤消失。 (這對我來說似乎是一個非理想的解決方案,不得不改變原有功能的屬性。)