FALSE
我希望结果是
DGE_tables <- list(structure(list(column1 = c("to_delete", "to_keep"),
column2 = c(56L,
45L)), class = "data.frame", row.names = c("1", "2")), structure(list(
column1 = c("to_delete", "to_keep"), column2 = c(78L, 27L
)), class = "data.frame", row.names = c("1", "2")))
但是,结果是
import tensorflow as tf
n = tf.constant(3)
a = tf.constant(0)
def cond(a, n):
return a < n
def body(a, n):
print("box")
return a+1, n
with tf.Session() as sess:
tf.global_variables_initializer().run()
a, n = tf.while_loop(cond, body, [a, n])
res = sess.run([a, n])
print(res)
box
box
box
[10, 10]
函数似乎只执行一次。
但是,如果是这样,那么结果应该是box
[10, 10]
,而不是body
。
我想知道为什么它看起来像这样,而while_loop如何执行其主体部分。
答案 0 :(得分:0)
创建图形后,它将打印一次。创建图形后,在执行过程中,没有要打印的操作。如果要在执行阶段进行打印,则必须明确指定要打印的操作。例如:
import tensorflow as tf
n = tf.constant(3)
a = tf.constant(0)
def cond(a, n):
return a < n
def body(a, n):
return tf.Print(a + 1, [], message='box'), n # <-- op for increment and print
a, n = tf.while_loop(cond, body, [a, n])
with tf.Session() as sess:
res = sess.run([a, n])
print(res)
# box
# box
# box
# [3, 3]
tf.Print()文档中的注释:
注意:此op打印到标准错误。目前不兼容 使用jupyter笔记本(打印到笔记本服务器的输出,而不是 笔记本)。