tensorflow的占位符本质就是先声明数据类型,以便建立模型时申请内存。
在这里声明的:https://github.com/tensorflow/tensorflow/blob/r1.13/tensorflow/python/ops/array_ops.py
tf.placeholder(
dtype,
shape=None,
name=None
)
需要知道下面这些:
tensorflow 的基本原理hin简单,他是静态图的激活:
建立一个空的架子,就像很多个有关节的管道。然后等你的数据进来,不断地优化这个管道,有的节点被砍掉,有的被变粗。所以tensorflow其实就是tensor的流动。tensor可以理解为多维数据,比如7*7*14
很多的教程都说model就是一张静态的GRAPH,tensorflow提供的方法init 一个session,sess = tf.Session() 然后sess.run()就是一个指针,指到图的哪里,就激活哪里。
那么图的建立,数据的输入,激活,目前看来是这三个部分的。你可以任意建立一个静态的模型,而不需要给他数据,而他也不会被唤醒运行,除非你sess.run()
那么,想过一个问题没有,静态图也是需要知道你的数据有多大的,毕竟你得先把架子真的搭建起来数据才能进来,那就需要我们先用占位符在模型静态图这样我们的程序(底层)才能和去申请排队占用内存。很多高级的语言在声明变量的时候不需要指明类型,比如python a=[],但是在c里面我们需要指明变量类型的,int a = 1.这就是因为C语言需要跟你的操作系统沟通。这就是tensorflow占位符的作用
import tensorflow as tf
#built model
a = tf.placeholder(dtype = np.float32)
b = tf.constant(3.3333)
c = tf.add(a,b)
with tf.Session() as sess:
print(sess.run(c,feed_dict={a:1.111,b:4.4444}))
这里sess.run()是方法,feed_dict是他的参数。是一个字典。