使用占位符和变量

变量是TensorFlow机器学习算法的参数,TensorFlow调整这些变量的状态来优化机器学习的算法。

占位符是TensorFlow对象,用于表示输入输出数据的格式,允许传入指定类型和形状的数据,并依赖计算机的计算结果。

在TensorFlow中,tf.Variable()函数创建变量,过程是输入一个张量,返回一个变量。声明变量后需要初始化变量。

下面是创建变量并初始化的例子:

my_var = tf.Variable(tf.zeros([2,3]))
sess = tf.Session()
initialize_op = tf.global_variables_intializer()
sess.run(intialize_op)

占位符仅仅声明数据位置,用于传入数据到计算图。占位符通过会话的feed_dict参数获取数据。在计算图中使用占位符时,必须在其上执行至少一个操作。在Tensorflow中,初始化计算图,声明一个占位符x,定义y为x的identity操作。identity操作返回占位符传入数据本身。

结果图,代码如下:

sess = tf.Session()
x = tf.placeholder(tf.float32, shape=[2,2])
y = tf.identity(x)
x_vals = np.random,rand(2,2)
sess.run(y ,feed_dict={x:x_vals})
#Note that sess.tun(x, feed_dict={x:x_vals}) will result in a self-referencing error.

延展学习

在计算图运行的过程中,需要告诉tensorflow初始化创建的变量。tensorflow的每个变量都有initalizer方法,但最常用的方式时helper函数(global_variables_initalizer())。此函数会一次性初始化所创建的所有变量,使用方法如下:

initializer_op = tf.global_variables_initializer()

但是,如果是基于已经初始化的变量进行初始化,则必须按序进行初始化,使用方式如下:

sess = tf.Session()
first_var = tf.Variable(tf.zeros([2,3])
sess.run(first_var.initializer)
second_var = tf.Variable(tf.zeros_like(first_var))
#Depends onfirst_var
sess.run(second_var.initializer)

 

posted @ 2019-10-01 11:24  明语  阅读(832)  评论(0编辑  收藏  举报