Что не так с моей реализацией, где я использовал матрицу с var для изменения градиента, но не совместим? - PullRequest
0 голосов
/ 07 апреля 2019

Согласно документу Tensorflow 1.8.0, функция compute_gradients возвращает список, содержащий градиент и пару переменных.Поэтому я думаю, что каждая пара имеет совместимые градиенты и переменные.Когда я использую матрицу маски с одинаковой формой с переменными для умножения соответствующего градиента, она не работает, поскольку совместима.Что не так с моей работой и как ее правильно реализовать?

Это работает в Ubuntu 16.4 cuda 9.0 Tensorflow 1.8.0 python 2.7, я прочитал документ и попробую другой метод для реализации, но я действительнохочу знать, почему и что мне мешает.

Tensorflow 1.8.0 Doc Link: https://tensorflow.google.cn/versions/r1.8/api_docs/python/tf/train/AdamOptimizer?hl=zh-cn#compute_gradients.

# for example, a little code to reproduce, 
# in Truth, The mask vars is generated by a trained model.
# So the mask vars shape is same with variables.
grads_and_vars = optimizer.compute_gradients(
            loss, colocate_gradients_with_ops=True)
gradients = [item[0] for item in grads_and_vars]
variables = [item[1] for item in grads_and_vars]

mask_vars = tf.ones(shape=variables[1].shape.as_list())
gradients[1] = mask_vars * gradients[1]

Я хочу заморозить некоторые нейро в переменной, поэтому я пытаюсьградиент маски, чтобы избежать неврозов при обновлении переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...