占位符
虽然常量允许我们在定义张量时提供值,但占位符允许我们创建可在运行时提供其值的张量。 TensorFlow 为tf.placeholder()
函数提供以下签名以创建占位符:
tf.placeholder(
dtype,
shape=None,
name=None
)
例如,让我们创建两个占位符并打印它们:
p1 = tf.placeholder(tf.float32)
p2 = tf.placeholder(tf.float32)
print('p1 : ', p1)
print('p2 : ', p2)
我们看到以下输出:
p1 : Tensor("Placeholder:0", dtype=float32)
p2 : Tensor("Placeholder_1:0", dtype=float32)
现在让我们使用这些占位符定义一个操作:
op4 = p1 * p2
TensorFlow 允许使用速记符号进行各种操作。在前面的例子中,p1 * p2
是tf.multiply(p1,p2)
的简写:
print('run(op4,{p1:2.0, p2:3.0}) : ',tfs.run(op4,{p1:2.0, p2:3.0}))
上面的命令在 TensorFlow 会话中运行op4
,为p1
和p2
的值提供 Python 字典(run()
操作的第二个参数)。
输出如下:
run(op4,{p1:2.0, p2:3.0}) : 6.0
我们还可以使用run()
操作中的feed_dict
参数指定字典:
print('run(op4,feed_dict = {p1:3.0, p2:4.0}) : ',
tfs.run(op4, feed_dict={p1: 3.0, p2: 4.0}))
输出如下:
run(op4,feed_dict = {p1:3.0, p2:4.0}) : 12.0
让我们看一下最后一个例子,向量被送到同一个操作:
print('run(op4,feed_dict = {p1:[2.0,3.0,4.0], p2:[3.0,4.0,5.0]}) : ',
tfs.run(op4,feed_dict = {p1:[2.0,3.0,4.0], p2:[3.0,4.0,5.0]}))
输出如下:
run(op4,feed_dict={p1:[2.0,3.0,4.0],p2:[3.0,4.0,5.0]}):[ 6\. 12\. 20.]
两个输入向量的元素以元素方式相乘。