凯鲁嘎吉
用书写铭记日常,最迷人的不在远方
 

TensorFlow中Variable对象的用法

 

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

所用版本:python3.5.2,tensorflow1.8.0,tensorboard1.8.0

In [1]:
# 修改variable对象的值,使用Variable.assing()方法,作用是为Variable对象赋予新值。
In [2]:
import tensorflow as tf
In [3]:
# 创建一个初始值为1的Variable对象
In [4]:
my_var = tf.Variable(1)
In [5]:
# 创建一个Op,使其在每层运行是都将该Variable对象乘以2
In [6]:
my_var_2 = my_var.assign(my_var*2)
In [7]:
# Variable对象的初始化
In [8]:
init = tf.global_variables_initializer()
In [9]:
# 启动一个会话
In [10]:
sess = tf.Session()
In [11]:
# 初始化Variable对象
In [13]:
sess.run(init)
In [14]:
# 将Variable对象乘以2,并将其返回
In [15]:
sess.run(my_var_2)
Out[15]:
2
In [16]:
# 再次乘以2
In [17]:
sess.run(my_var_2)
Out[17]:
4
In [18]:
# 再次乘以2
In [19]:
sess.run(my_var_2)
Out[19]:
8
In [20]:
sess.close()
In [21]:
# 实现Variable对象的自增自减
In [22]:
reset
 
Once deleted, variables cannot be recovered. Proceed (y/[n])? y
In [23]:
import tensorflow as tf
In [24]:
my_var = tf.Variable(0)
In [25]:
init = tf.global_variables_initializer()
In [26]:
# 启动两个Session对象
In [27]:
sess1 = tf.Session()
In [28]:
sess2 = tf.Session()
In [29]:
# 在sess1内对Variable对象进行初始化,以及在同一个Session对象中对my_var的值自增
In [30]:
sess1.run(init)
In [31]:
sess1.run(my_var.assign_add(5))
Out[31]:
5
In [32]:
# 在sess2内做先沟通的运算,但使用不同的自增值
In [33]:
sess2.run(init)
In [34]:
sess2.run(my_var.assign_add(2))
Out[34]:
2
In [35]:
# 能够在不同的Session对象中独立的对Variable对象的值实现自增/自减
In [36]:
sess1.run(my_var.assign_add(5)) # 5+5=10
Out[36]:
10
In [37]:
sess2.run(my_var.assign_sub(2)) # 2-2=0
Out[37]:
0
In [38]:
sess2.run(my_var.assign_sub(4)) #0-4=-4
Out[38]:
-4
In [39]:
# 将sess1的Variable对象的值重置为初始值0
In [41]:
sess1.run(init)
In [42]:
sess1.run(my_var)
Out[42]:
0
In [43]:
sess2.run(my_var)
Out[43]:
-4
In [44]:
# 将sess2的Variable对象的值重置为0
In [45]:
sess2.run(init)
In [46]:
sess2.run(my_var)
Out[46]:
0
In [47]:
sess1.close()
In [48]:
sess2.close()
 

参考文献:人工智能原理与实践:基于Python语言和TensorFlow / 张明,何艳珊,杜永文编著. —— 北京:人民邮电出版社,2019.8.

posted on 2021-08-28 16:40  凯鲁嘎吉  阅读(110)  评论(0编辑  收藏  举报