基于基于tensorflow for循环循环 while循环案例循环案例
我就废话不多说了,大家还是直接看代码吧~
import tensorflow as tf
n1 = tf.constant(2)
n2 = tf.constant(3)
n3 = tf.constant(4)
def cond1(i, a, b):
return i < n1
def cond2(i, a, b):
return i < n2
def cond3(i, a, b):
return i < n3
def body(i, a, b):
return i + 1, b, a + b
i1, a1, b1 = tf.while_loop(cond1, body, (2, 1, 1))
i2, a2, b2 = tf.while_loop(cond2, body, (2, 1, 1))
i3, a3, b3 = tf.while_loop(cond3, body, (2, 1, 1))
sess = tf.Session()
print(sess.run(i1))
print(sess.run(a1))
print(sess.run(b1))
print("-")
print(sess.run(i2))
print(sess.run(a2))
print(sess.run(b2))
print("-")
print(sess.run(i3))
print(sess.run(a3))
print(sess.run(b3))
print结果:
2
1
1
-
3
1
2
-
4
2
3
可见body函数返回的三个变量又传给了body
补充知识:补充知识:tensorflow在在tf.while_loop循环循环(非一般循环非一般循环)中使用操纵变量该怎么做中使用操纵变量该怎么做
代码(操纵全局变量)代码(操纵全局变量)
xiaojie=1
i=tf.constant(0,dtype=tf.int32)
batch_len=tf.constant(10,dtype=tf.int32)
loop_cond = lambda a,b: tf.less(a,batch_len)
#yy=tf.Print(batch_len,[batch_len],"batch_len:")
yy=tf.constant(0)
loop_vars=[i,yy] def _recurrence(i,yy):
c=tf.constant(2,dtype=tf.int32)
x=tf.multiply(i,c)
global xiaojie
xiaojie=xiaojie+1
print_info=tf.Print(x,[x],"x:")
yy=yy+print_info
i=tf.add(i,1)
# print (xiaojie)
return i,yy
i,yy=tf.while_loop(loop_cond,_recurrence,loop_vars,parallel_iterations=1)#可以批处理
sess = tf.Session()
print (sess.run(i))
print (xiaojie)
输出的是10和2。
也就是xiaojie只被修改了一次。
这个时候,在_recurrence循环体中添加语句