¿Cómo puedo asignar / actualizar un subconjunto de la variable compartida tensor en Theano?

Al comstackr una función en theano , una variable compartida (por ejemplo, X) se puede actualizar especificando updates=[(X, new_value)] . Ahora estoy intentando actualizar solo el subconjunto de una variable compartida:

 from theano import tensor as T from theano import function import numpy X = T.shared(numpy.array([0,1,2,3,4])) Y = T.vector() f = function([Y], updates=[(X[2:4], Y)] # error occur: # 'update target must # be a SharedVariable' 

Los códigos generarán un error “el objective de actualización debe ser una variable compartida”, supongo que eso significa que los objectives de actualización no pueden ser variables no compartidas. Entonces, ¿hay alguna forma de comstackr una función para simplemente eliminar un subconjunto de variables compartidas?

Utilice set_subtensor o inc_subtensor :

 from theano import tensor as T from theano import function, shared import numpy X = shared(numpy.array([0,1,2,3,4])) Y = T.vector() X_update = (X, T.set_subtensor(X[2:4], Y)) f = function([Y], updates=[X_update]) f([100,10]) print X.get_value() # [0 1 100 10 4] 

Ahora hay una página sobre esto en las preguntas frecuentes de Theano: http://deeplearning.net/software/theano/tutorial/faq_tutorial.html

Este código debería resolver su problema:

 from theano import tensor as T from theano import function, shared import numpy X = shared(numpy.array([0,1,2,3,4], dtype='int')) Y = T.lvector() X_update = (X, X[2:4]+Y) f = function(inputs=[Y], updates=[X_update]) f([100,10]) print X.get_value() # output: [102 13] 

Y aquí está la introducción sobre variables compartidas en el tutorial oficial .

Por favor pregunte, si tiene más preguntas!