Я хочу сделать следующее:Вычислить градиент только часть общего переменного массива в Теано
import theano, numpy, theano.tensor as T
a = T.fvector('a')
w = theano.shared(numpy.array([1, 2, 3, 4], dtype=theano.config.floatX))
w_sub = w[1]
b = T.sum(a * w)
grad = T.grad(b, w_sub)
Здесь w_sub, например, ш [1], но я не хочу, чтобы явно выписать б в функция w_sub. Несмотря на то, что я прошел через http://deeplearning.net/software/theano/tutorial/faq_tutorial.html и другие связанные с этим вопросы, я не могу его решить.
Это просто, чтобы показать вам мою проблему. Вообще-то, что я действительно хочу сделать, это редкая свертка с лазанью. Нулевые записи в весовой матрице не нуждаются в обновлении, и поэтому нет необходимости вычислять градиент для этих записей w.
С уважением, благодарю вас заранее!
Йерун
PS: Теперь это полное сообщение об ошибке:
Traceback (most recent call last):
File "D:/Jeroen/Project_Lasagne_General/test_script.py", line 9, in <module>
grad = T.grad(b, w_sub)
File "C:\Anaconda2\lib\site-packages\theano\gradient.py", line 545, in grad
handle_disconnected(elem)
File "C:\Anaconda2\lib\site-packages\theano\gradient.py", line 532, in handle_disconnected
raise DisconnectedInputError(message)
theano.gradient.DisconnectedInputError: grad method was asked to compute the gradient with respect to a variable that is not part of the computational graph of the cost, or is used only by a non-differentiable operator: Subtensor{int64}.0
Backtrace when the node is created:
File "D:/Jeroen/Project_Lasagne_General/test_script.py", line 6, in <module>
w_sub = w[1]
Хорошее объяснение того, что происходит. Спасибо. –