本次主要介绍Tensorflow中的Placeholder及用法,Placeholder的中文意思就是占位符,用于在会话运行时动态提供输入数据。Placeholder相当于定义了一个位置,在这个位置上的数据在程序运行时再指定。
在以后的编程中我们可能会遇到这样的情况:在训练神经网络时需要每次提供一个批量的训练样本,如果每次迭代选取的数据要通过常量表示,那么TensorFlow 的计算图会非常大。因为每增加一个常量,TensorFlow 都会在计算图中增加一个结点,所以说拥有几百万次迭代的神经网络会拥有极其庞大的计算图,而占位符却可以解决这一点,它只会拥有占位符这一个结点,Placeholder机制的出现就是为了解决这个问题,我们在编程的时候只需要把数据通过placeholder传入tensorflow计算图即可,我们通过下面的代码演示来这个方法:
我们可以看到上面就是两个数组相加的结果。此外我们在定义placeholder时,这个位置上的数据类型(dtype参数)是需要指定的,而且数据类型是不可以改变的,比如有(tf.float16,tf.float32)。Placeholder中shape参数就是数据维度信息;对于不确定的维度,可以填入None。
在昨天的文章中我们定义的a和b是常量和变量,这里把他们定义为一个placeholder,因此我们在运行Session.run()函数时,我们注意到一个feed_dict函数,这个函数的用法是用来提供a和b的取值。feed_dict是一个字典,在字典中需要给出每个用到的占位符的取值,如果参与运算的pl