TensorFlow:get_variable()但是对于占位符?

时间:2017-10-03 05:39:21

标签: python tensorflow

有一个函数tf.get_variable('name')允许隐含地""将参数传递给函数,如:

def function(sess, feed):
    with tf.variable_scope('training', reuse=True):
        cost = tf.get_variable('cost')
    value = sess.run(cost, feed_dict=feed) 
    # other statements

但是如果想要将tf.placeholder传递给函数呢?是否有相同的占位符机制,即tf.get_placeholder()

def function(sess, cost, X_train, y_train):
    # Note this is NOT a valid TF code
    with tf.variable_scope('training', reuse=True):
        features = tf.get_placeholder('features')
        labels = tf.get_placeholder('labels')
    feed = {features: X_train, labels: y_train}
    value = sess.run(cost, feed_dict=feed)
    print('Cost: %s' % value)    

或者做这件事并没有多大意义,而且只是在函数内构造占位符会更好吗?

2 个答案:

答案 0 :(得分:1)

占位符只是...占位符。没有必要“获得”一个占位符,好像它有某种状态(这就是get变量的作用,在当前状态下返回一个变量)。

在任何地方使用相同的python变量。

此外,如果您不想传递python变量,因为您的方法signaturl变得丑陋,您可以利用您正在构建图形的事实,图形本身包含有关声明的占位符的信息。

您可以执行以下操作:

{{1}}

答案 1 :(得分:1)

除了你在同一个脚本中工作你不应该需要这个,你可以通过按名称获取张量来实现,如Tensorflow: How to get a tensor by name?

例如

p = tf.placeholder(tf.float32)
p2 = tf.get_default_graph().get_tensor_by_name(p.name)

assert p == p2