placeholder函数主要是用来解决一个问题:在tensorflow中,我们每生成一个常量,就需要在计算图中增加一个节点,数据量较大时,会导致计算图特别大。为了解决这个问题,用placeholder函数来输入数据,它相当于定义了一个位置,只需要将数据通过placeholder传入tensorflow中的计算图即可。placeholder的数据类型需要指定,也可以不变,下面是一个小例子:
import tensorflow as tf
w1=tf.Variable(tf.random_normal([2,3],stddev=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1))
#定义x为placeholder
#x=tf.placeholder(tf.float32,shape=(1,2),name="input")#1*2的矩阵
x=tf.placeholder(tf.float32,shape=(3,2),name="input")
#若shape=(n,m),则x有n个m维的样例数据,也就是n个1*m的矩阵
a=tf.matmul(x,w1)
y=tf.matmul(a,w2)
sess=tf.Session()
init_op=tf.initialize_all_variables()
sess.run(init_op)
#print(sess.run(y))
#print(sess.run(y,feed_dict={x:[[0.7,0.9]]}))
print(sess.run(y,feed_dict={x:[[0.1,0.2],[0.3,0.4],[0.5,0.6]]}))
#feed_dict是一个字典,它需要给出每个用到的placeholder的取值,也就是指定x的取值