Python TensorFlow:为什么不使用函数而不是占位符?

Python TensorFlow:为什么不使用函数而不是占位符?,python,tensorflow,Python,Tensorflow,我开始使用TensorFlow(与Python一起使用),我想知道:当在函数中使用占位符时,为什么不在函数中使用一个参数,它将提供一个TensorFlow常量而不是占位符 下面是一个示例(区别在于x): 而不是: def sigmoid(z): x = tf.placeholder(tf.float32, name = "...") sigmoid = tf.sigmoid(x) with tf.Session() as sess: result = s

我开始使用TensorFlow(与Python一起使用),我想知道:当在函数中使用占位符时,为什么不在函数中使用一个参数,它将提供一个TensorFlow常量而不是占位符

下面是一个示例(区别在于
x
):

而不是:

def sigmoid(z):
    x = tf.placeholder(tf.float32, name = "...")
    sigmoid = tf.sigmoid(x)
    with tf.Session() as sess: 
        result = sess.run(sigmoid, feed_dict={x:z})
    return result

Tensorflow的想法是,您将在大量数据上重复相同的计算。编写代码时,您正在设置一个计算图,稍后将对数据执行该图。在第一个示例中,您已将数据硬编码为常量。这不是典型的tensorflow用例。第二个例子更好,因为它允许您对不同的数据重复使用相同的计算图。

Tensorflow的思想是,您将在大量数据上重复相同的计算。编写代码时,您正在设置一个计算图,稍后将对数据执行该图。在第一个示例中,您已将数据硬编码为常量。这不是典型的tensorflow用例。第二个示例更好,因为它允许您使用不同的数据重用相同的计算图。

这两种情况都不是典型的tensorflow用例这两种情况都不是典型的tensorflow用例当使用GPU时,使用占位符在计算时间上也更好。因此,所需的内存可以预先分配,而不仅仅是在函数中需要时。因此,在使用GPU时,使用占位符对计算时间更有利。因此,所需的内存可以预先分配,而不仅仅是在函数中需要时
def sigmoid(z):
    x = tf.placeholder(tf.float32, name = "...")
    sigmoid = tf.sigmoid(x)
    with tf.Session() as sess: 
        result = sess.run(sigmoid, feed_dict={x:z})
    return result