写在前面
tensorflow的命名问题断断续续接触了又忘记,干脆写一篇博来记录一下好啦。其实极客学院里面也回答的挺清楚的了:极客学院:共享变量, 但它考虑了更多种情况,自己还是想以更简单的方式去记忆。
tf.Variable:创建变量
这个是最简单粗暴的创建变量方式,如果不停地调用它,是会产生不同的变量的。举个更简单的例子:
import tensorflow as tf
#tf.Variable创建变量
def geta():
a = tf.Variable([1],name='a')
return a
a = geta() # 得到<tf.Variable 'a:0' shape=(1,) dtype=int32_ref>
a1 = geta() # 得到与a不同的变量:<tf.Variable 'a_1:0' shape=(1,) dtype=int32_ref>
调用geta(),会得到 <tf.Variable ‘a:0’ shape=(1,) dtype=int32_ref>,再调用geta(),则得到<tf.Variable ‘a_1:0’ shape=(1,) dtype=int32_ref>。可以看到此时两次调用得到两个不同的变量。
但在实际中,我们很可能需要多次调用而使用同一个变量,比如极客学院中提到的,我们可能需要定义一个图片的滤波器函数,然后对不同图片使用同一个滤波器,这时候就需要所谓的共享变量