Actualice solo una parte de la matriz de inclusión de palabras en Tensorflow

Suponiendo que quiero actualizar una matriz de inclusión de palabras previamente capacitada durante el entrenamiento, ¿hay alguna manera de actualizar solo un subconjunto de la matriz de inclusión de palabras?

He buscado en la página de la API de Tensorflow y he encontrado esto:

# Create an optimizer.
opt = GradientDescentOptimizer(learning_rate=0.1)

# Compute the gradients for a list of variables.
grads_and_vars = opt.compute_gradients(loss, <list of variables>)

# grads_and_vars is a list of tuples (gradient, variable).  Do whatever you
# need to the 'gradient' part, for example cap them, etc.
capped_grads_and_vars = [(MyCapper(gv[0]), gv[1])) for gv in grads_and_vars]

# Ask the optimizer to apply the capped gradients.
opt.apply_gradients(capped_grads_and_vars)

Sin embargo, ¿cómo lo aplico a la matriz de inclusión de palabras? Supongamos que hago:

word_emb = tf.Variable(0.2 * tf.random_uniform([syn0.shape[0],s['es']], minval=-1.0, maxval=1.0, dtype=tf.float32),name='word_emb',trainable=False)

gather_emb = tf.gather(word_emb,indices) #assuming that I pass some indices as placeholder through feed_dict

opt = tf.train.AdamOptimizer(1e-4)
grad = opt.compute_gradients(loss,gather_emb)

¿Cómo uso entoncesopt.apply_gradients ytf.scatter_update actualizar la matriz de incrustación original? (Además, tensorflow arroja un error si el segundo argumento decompute_gradient no es untf.Variable)

Respuestas a la pregunta(2)

Su respuesta a la pregunta