Как применить функцию к значению тензора, а затем присвоить выход тому же тензору - PullRequest
0 голосов
/ 30 августа 2018

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

Я использовал tf.assign () в качестве решения, но так как моя функция принимает массивы, а не тензоры, она потерпела неудачу.

Вот эскиз того, что я хочу сделать:

W = tf.Variable(...)
...
opt = tf.train.AdamOptimizer(learning_rate).minimize(loss, var_list=['W'])
W = my_function(W)

1 Ответ

0 голосов
/ 30 августа 2018

Кажется, что tf.control_dependencies - это то, что вам нужно

один простой пример:

import tensorflow as tf

var = tf.get_variable('var', initializer=0.0)
# replace `tf.add` with your custom function 
addop = tf.add(var, 1)  

with tf.control_dependencies([addop]):
    updateop = tf.assign(var, addop)

config = tf.ConfigProto()
config.gpu_options.allow_growth = True  # pylint: disable=no-member
with tf.Session(config=config) as sess:
    sess.run(tf.global_variables_initializer())
    updateop.eval()
    print(var.eval())
    updateop.eval()
    print(var.eval())
    updateop.eval()
    print(var.eval())

Выход:

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