tensorflow中的variable令人迷糊。它与python的变量是何关系?请看文档的定义。
A variable maintains state in the graph across calls to run()
. You add a variable to the graph by constructing an instance of the class Variable
.
在graph中交叉调用run时,variable用来维持其状态。通俗地说,通过variable,可以在多次运行时,保存graph的状态。比如,训练模型时,每一个模型的参数需要在训练更新后保存下来,供下一次使用,模型参数有可以利用 variable来定义。
python的变量和其他语言类似,指程序段运行时的临时值,它有作用域,一般有局部作用域、全局作用域等。variable有点类似全局作用域的变量。函数内部定义的python变量属于局部作用域变量,当函数执行完毕,该变量不复存在,下次调用该函数时,无法取得变量上次的值。(c++的静态变量可以保存变量的上次调用值)
tensorflow的变量共享又是什么梗?
在一个函数内定义的variable,如果另一个函数想访问,那就需要变量共享的支持了。那变量共享是如何做到的呢,可以想象成variable是定义在graph范围的变量,在同一个图中实现共享。