占位符基础知识

占位符允许你将值提供到张量流图中。它们允许你指定有关所输入值的维度和数据类型的约束。因此,它们在创建神经网络以提供新的训练示例时非常有用。

下面的示例声明了一个 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.]]