Tensorflow变量

Tensorflow变量


  在Tensorflow的计算之前,需要将所有用到的变量初始化。也就是说,虽然在变量定义时给出了变量初始化的方法,但这个方法并没有被真正的运行。所以在计算之前,需要通过运行initializer方法来给变量赋值。虽然直接调用每个变量的初始化过程是一个可行的方案,但是当变量数目增多,或者变量之间存在依赖关系时,单个调用方案就比较麻烦,可以通过tf.global_variables_initializer函数实现初始化所有变量的过程:

init_op = tf.global_variables_initializer()
sess.run(init_op)

  通过该函数,就不需要将变量一个一个的初始化了,这个函数也会自动处理变量之间的依赖关系。

1、变量和张量的关系

  在Tensorflow中,变量的声明函数tf.Variable是一个运算。这个运算的输出结果就是一个张量,这个张量也是本篇中讲到的变量。所以变量只是一种特殊的张量。下面呢给出tf.Variable操作在Tensorflow中底层是如何实现的:
在这里插入图片描述
  上图中的黑色椭圆代表变量w1,w1是一个Variable运算。在这张图的下方可以看到w1通过一个read操作将值提供给一个乘法运算,这个乘法操作就是tf.matmul(x,w1)。初始化变量w1的操作就是通过Assign操作完成的。Assign这个节点的输入为随机数生成函数的输出,而输出赋给了变量w1,这样就完成了变量初始化过程。
  在计算过程中,所有变量都会被自动地加入到GraphKeys.VaRIABLES这个集合中。通过tf.global_variables()函数可以拿到当前计算图上所有的变量。拿到计算图上所有的变量有助于持久化整个计算图的运行状态。当构建机器学习模型时,可以通过变量声明函数中的trainable参数来区分需要优化的参数。Tensorflow中提供的神经网络优化算法会将GraphKeys.TRAINABLE_VARIABLES集合中的变量作为默认的优化对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值