如何将函数应用于张量的值,然后将输出分配给相同的张量

时间:2018-08-30 11:36:58

标签: numpy tensorflow

我想将网络的更新权重(执行优化后)投影到一个特殊的空间中,在该空间中需要传递该张量的值。应用投影的函数获取一个numpy数组作为输入。有办法吗?

我使用tf.assign()作为解决方案,但是由于我的函数接受数组而不是张量,所以它失败了。

这是我想做的事的草图:

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

1 个答案:

答案 0 :(得分:0)

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