占位符

虽然常量允许我们在定义张量时提供值,但占位符允许我们创建可在运行时提供其值的张量。 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 * p2tf.multiply(p1,p2)的简写:

print('run(op4,{p1:2.0, p2:3.0}) : ',tfs.run(op4,{p1:2.0, p2:3.0}))

上面的命令在 TensorFlow 会话中运行op4,为p1p2的值提供 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.]

两个输入向量的元素以元素方式相乘。

results matching ""

    No results matching ""