tf.placeholder函数的用法
Tensorflow中的palceholder,中文翻译为占位符
在代码层面,每一个tensor值在graph上都是一个op,当我们将train数据分成一个个minibatch然后传入网络进行训练时,每一个minibatch都将是一个op,这样的话,一副graph上的op未免太多,也会产生巨大的开销;于是就有了tf.placeholder(),我们每次可以将 一个minibatch传入到x = tf.placeholder(tf.float32,[None,32])上,下一次传入的x都替换掉上一次传入的x,这样就对于所有传入的minibatch x就只会产生一个op,不会产生其他多余的op,进而减少了graph的开销。
函数形式:
tf.placeholder( dtype, shape=None, name=None )
函数参数:
- 
 dtype:数据类型。常用的是tf.float32,tf.float64等数值类型 shape:数据形状。默认是None,就是一维值,也可以是多维(比如[2,3], [None, 3]表示列是3,行不定) name:名称
返回:
Tensor类型。
代码示例1:
import tensorflow as tf
import numpy as np
 
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
 
output = tf.multiply(a, b)
 
with tf.Session() as sess:
    print(sess.run(output, feed_dict = {a:[3.], b: [4.]})) 
代码示例2:
import tensorflow as tf
import numpy as np
 
x = tf.placeholder(tf.float32, shape=(1024, 1024))
y = tf.matmul(x, x)
 
with tf.Session() as sess:
    #print(sess.run(y))  # ERROR:此处x还没有赋值
    rand_array = np.random.rand(1024, 1024)
    print(sess.run(y, feed_dict={x: rand_array})) 
代码示例3:
其实feed_dict可以喂东西给其他tensor,不止placeholder这一种。
import tensorflow as tf
a = tf.placeholder(dtype=tf.float32)
b = tf.constant(2.0)
c = tf.add(a, b)
with tf.Session() as sess:
    print sess.run(c, feed_dict = {a: 1.0, b: 3.0})  #结果为4.0 
运行的结果为4,这里利用feed_dict将3.0送给了tensor b
参考资料:

