Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow tf.assign()-如何在每次迭代中按给定值递增值_Tensorflow - Fatal编程技术网

Tensorflow tf.assign()-如何在每次迭代中按给定值递增值

Tensorflow tf.assign()-如何在每次迭代中按给定值递增值,tensorflow,Tensorflow,我试图在张量流中创建迭代,其中val在下面循环的每次迭代后增加1。但是这个代码增加了2。所以我有两个问题: 一,。为什么会这样? 2.我应该怎么做才能使它在每次迭代中只添加1个 iters = 10 x = tf.constant(1, dtype=tf.float32, name="X") y = tf.constant(2, dtype=tf.float32, name="y") val = tf.Variable(y-x, name="val") assign_op = tf.assig

我试图在张量流中创建迭代,其中val在下面循环的每次迭代后增加1。但是这个代码增加了2。所以我有两个问题:

一,。为什么会这样? 2.我应该怎么做才能使它在每次迭代中只添加1个

iters = 10

x = tf.constant(1, dtype=tf.float32, name="X")
y = tf.constant(2, dtype=tf.float32, name="y")
val = tf.Variable(y-x, name="val")
assign_op = tf.assign(val, val+1)

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)

    print("val_init",val.eval())

    for iter in range(iters):
        sess.run(assign_op)
        print(iter, x.eval(),y.eval(),"val",val.eval(),"assign_op", assign_op.eval())
结果:
您的赋值也在增加val。所以每次迭代都要增加两次。您可以在输出中看到它


val_init 1.0 0 1.0 2.0 val 2.0分配_op 3.0 1.0 2.0 val 4.0分配_op 5.0 2 1.0 2.0 val 6.0分配_op 7.0 3 1.0 2.0 val 8.0分配_op 9.0 4 1.0 2.0 val 10.0分配_op 11.0 5 1.0 1.0 2.0 val 12.0分配_op 13.0 6 1.0 1.0 1.0 2.0 val 14.0分配_op 15.0 7 1.0 2.0 val 16.0分配_op 17.0分配_op 19.0分配_op 1.0 0分配

在@sladomic answer之后,我将代码修改为:对于测距仪中的iter:val_pre=val.eval新变量捕获val的当前状态;必须放在.run和needto.eval变量sess.runassign_op printpoch,assign_op,assign_op.eval之前。这将导致再次执行assign_op!!!打印机,val PRE:,val_PRE,val AFTER:,val.eval
"""
val_init 1.0
0 1.0 2.0 val 2.0 assign_op 3.0
1 1.0 2.0 val 4.0 assign_op 5.0
2 1.0 2.0 val 6.0 assign_op 7.0
3 1.0 2.0 val 8.0 assign_op 9.0
4 1.0 2.0 val 10.0 assign_op 11.0
5 1.0 2.0 val 12.0 assign_op 13.0
6 1.0 2.0 val 14.0 assign_op 15.0
7 1.0 2.0 val 16.0 assign_op 17.0
8 1.0 2.0 val 18.0 assign_op 19.0
9 1.0 2.0 val 20.0 assign_op 21.0
"""