tensorflow学习笔记(四十五):sess.run(tf.global_variables_initializer()) 做了什么?

当我们训练自己的神经网络的时候,无一例外的就是都会加上一句 sess.run(tf.global_variables_initializer()) ,这行代码的官方解释是 初始化模型的参数。那么,它到底做了些什么?

一步步看源代码:(代码在后面)

  • global_variables_initializer 返回一个用来初始化 计算图中 所有global variableop
    • 这个op 到底是啥,还不清楚。
    • 函数中调用了 variable_initializer()global_variables()
  • global_variables() 返回一个 Variable list ,里面保存的是 gloabal variables
  • variable_initializer()Variable list 中的所有 Variable 取出来,将其 variable.initializer 属性做成一个 op group
  • 然后看 Variable 类的源码可以发现, variable.initializer 就是一个 assign op

所以: sess.run(tf.global_variables_initializer()) 就是 run了 所有global Variableassign op,这就是初始化参数的本来面目。

def global_variables_initializer():
  """Returns an Op that initializes global variables.
  Returns:
    An Op that initializes global variables in the graph.
  """
  return variables_initializer(global_variables())

def global_variables():
  """Returns global variables.
  Returns:
    A list of `Variable` objects.
  """
  return ops.get_collection(ops.GraphKeys.GLOBAL_VARIABLES)

def variables_initializer(var_list, name="init"):
  """Returns an Op that initializes a list of variables.
  Args:
    var_list: List of `Variable` objects to initialize.
    name: Optional name for the returned operation.

  Returns:
    An Op that run the initializers of all the specified variables.
  """
  if var_list:
    return control_flow_ops.group(*[v.initializer for v in var_list], name=name)
  return control_flow_ops.no_op(name=name)
class Variable(object):
    def _init_from_args(self, ...):
        self._initializer_op = state_ops.assign(
            self._variable, self._initial_value,
            validate_shape=validate_shape).op
    @property
    def initializer(self):
        """The initializer operation for this variable."""
        return self._initializer_op

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

教程 | 利用TensorFlow和神经网络来处理文本分类问题

35370
来自专栏懒人开发

(10.4)James Stewart Calculus 5th Edition:Areas and Lengths in Polar Coordinates

极坐标系中的面积和长度 (这里看见 Coordinates ,就想到了 CoordiateLayout _ ) 我们简单要求一个圆的部分面积

11620
来自专栏人工智能LeadAI

图像学习-验证码识别

这是去年博主心血来潮实现的一个小模型,现在把它总结一下。由于楼主比较懒,网上许多方法都需要切割图片,但是楼主思索了一下感觉让模型有多个输出就可以了呀,没必要一定...

70240
来自专栏游戏开发那些事

【小白学游戏常用算法】一、随机迷宫算法

  现在的很多游戏中的地图一般采用格子的方式,虽然在表面地图上无法看到实际的格子,但是在地图的结构中专门有一个逻辑层,这个层和地图大小相等,划出很多小的格子,然...

17420
来自专栏腾讯Bugly的专栏

手机端运行卷积神经网络实现文档检测功能(二) -- 从 VGG 到 MobileNetV2 知识梳理

1K40
来自专栏null的专栏

简单易学的机器学习算法——Rosenblatt感知机的对偶解法

一、Rosenblatt感知机回顾    image.png 二、Rosenblatt感知机的对偶形式    image.png 三、算法流程 image....

39050
来自专栏null的专栏

深度学习算法原理——稀疏自编码器

注:最近打算将UFLDL教程重新看一遍,其实里面有很多关于神经网络以及深度学习的知识点很有用,但是只是学习深度学习的话有一些内容就有点多余,所以想整理一个笔记,...

58960
来自专栏深度学习之tensorflow实战篇

python SVM 案例,sklearn.svm.SVC 参数说明

sklearn.svm.SVC 参数说明 经常用到sklearn中的SVC函数,这里把文档中的参数翻译了一些,以备不时之需。 本身这个函数也是基于libsvm实...

1.1K60
来自专栏PPV课数据科学社区

【学习】干货:与数据挖掘有关或有帮助的R包和函数的集合

与数据挖掘有关或者有帮助的R包和函数的集合。 1、聚类 常用的包: fpc,cluster,pvclust,mclust 基于划分的方法: kmeans, pa...

27550
来自专栏智能算法

Learning to Rank 小结

一、学习排序(Learning to Rank) LTR(Learning torank)学习排序是一种监督学习(SupervisedLearnin...

47950

扫码关注云+社区

领取腾讯云代金券