有一个函数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)
或者做这件事并没有多大意义,而且只是在函数内构造占位符会更好吗?
答案 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