gpt4 book ai didi

python - 如何在 TensorFlow 图中添加 if 条件?

转载 作者:IT老高 更新时间:2023-10-28 20:24:52 24 4
gpt4 key购买 nike

假设我有以下代码:

x = tf.placeholder("float32", shape=[None, ins_size**2*3], name = "x_input")
condition = tf.placeholder("int32", shape=[1, 1], name = "condition")
W = tf.Variable(tf.zeros([ins_size**2*3,label_option]), name = "weights")
b = tf.Variable(tf.zeros([label_option]), name = "bias")

if condition > 0:
y = tf.nn.softmax(tf.matmul(x, W) + b)
else:
y = tf.nn.softmax(tf.matmul(x, W) - b)

if 语句在计算中会起作用吗(我不这么认为)?如果没有,如何在 TensorFlow 计算图中添加 if 语句?

最佳答案

if 语句在这里不起作用是正确的,因为条件是在图形构建时评估的,而您可能希望条件取决于提供给占位符的值运行。 (事实上​​,它总是采用第一个分支,因为 condition > 0 的计算结果为 Tensor,即 "truthy" in Python。)

为了支持条件控制流,TensorFlow 提供了 tf.cond()运算符,它根据 bool 条件评估两个分支之一。为了向您展示如何使用它,为了简单起见,我将重写您的程序,使 condition 是一个标量 tf.int32 值:

x = tf.placeholder(tf.float32, shape=[None, ins_size**2*3], name="x_input")
condition = tf.placeholder(tf.int32, shape=[], name="condition")
W = tf.Variable(tf.zeros([ins_size**2 * 3, label_option]), name="weights")
b = tf.Variable(tf.zeros([label_option]), name="bias")

y = tf.cond(condition > 0, lambda: tf.matmul(x, W) + b, lambda: tf.matmul(x, W) - b)

关于python - 如何在 TensorFlow 图中添加 if 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35833011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com