占位符基础知识
占位符允许你将值提供到张量流图中。它们允许你指定有关所输入值的维度和数据类型的约束。因此,它们在创建神经网络以提供新的训练示例时非常有用。
下面的示例声明了一个 3 乘 4 张量的占位符,其元素是(或可以被类型化)32 位浮点数。
a = tf.placeholder(tf.float32, shape=[3,4], name='a')
占位符不会自己包含任何值,因此在运行会话时为它们提供值非常重要,否则你将收到错误消息。这可以在调用 session.run()
时使用 feed_dict
参数来完成,例如:
# run the graph up to node b, feeding the placeholder `a` with values in my_array
session.run(b, feed_dict={a: my_array})
这是一个简单的例子,显示了声明和喂食控制台器的整个过程。
import tensorflow as tf
import numpy as np
# Build a graph
graph = tf.Graph()
with graph.as_default():
# declare a placeholder that is 3 by 4 of type float32
a = tf.placeholder(tf.float32, shape=(3, 4), name='a')
# Perform some operation on the placeholder
b = a * 2
# Create an array to be fed to `a`
input_array = np.ones((3,4))
# Create a session, and run the graph
with tf.Session(graph=graph) as session:
# run the session up to node b, feeding an array of values into a
output = session.run(b, feed_dict={a: input_array})
print(output)
占位符采用 3 乘 4 的数组,然后在节点 b 处将该张量乘以 2,然后返回并打印出以下内容:
[[ 2. 2. 2. 2.]
[ 2. 2. 2. 2.]
[ 2. 2. 2. 2.]]