tensorflow学习笔记(四十五):sess.run(tf.global_variables_initializer()) 做了什么?
當(dāng)我們訓(xùn)練自己的神經(jīng)網(wǎng)絡(luò)的時(shí)候,無(wú)一例外的就是都會(huì)加上一句 sess.run(tf.global_variables_initializer()) ,這行代碼的官方解釋是 初始化模型的參數(shù)。那么,它到底做了些什么?
一步步看源代碼:(代碼在后面)
global_variables_initializer 返回一個(gè)用來(lái)初始化 計(jì)算圖中 所有g(shù)lobal variable的 op。
這個(gè)op 到底是啥,還不清楚。
函數(shù)中調(diào)用了 variable_initializer() 和 global_variables()
global_variables() 返回一個(gè) Variable list ,里面保存的是 gloabal variables。
variable_initializer() 將 Variable list 中的所有 Variable 取出來(lái),將其 variable.initializer 屬性做成一個(gè) op group。
然后看 Variable 類的源碼可以發(fā)現(xiàn), variable.initializer 就是一個(gè) assign op。
所以: sess.run(tf.global_variables_initializer()) 就是 run了 所有g(shù)lobal Variable 的 assign op,這就是初始化參數(shù)的本來(lái)面目。
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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
---------------------
作者:ke1th
來(lái)源:CSDN
原文:https://blog.csdn.net/u012436149/article/details/78291545
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的tensorflow学习笔记(四十五):sess.run(tf.global_variables_initializer()) 做了什么?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: tensorflow学习笔记(二十五):
- 下一篇: tensorflow op tf.g