tensorflow中tf.Variable() 方法和 tf.get_variable()方法的区别
2018-04-02 14:51
555 查看
除了用法稍有不同外,二者本质区别在于,当出现name冲突时处理不同。
输入:
输出:
可以看到,虽然我们把两个变量名字都取作‘var’,但是第二个被自动重命名为‘var_1’。
结论:使用 tf.Variable() 方法时不用担心名字冲突,框架会自动处理。
(reuse=tf.AUTO_REUSE)分为两种情况:
输出:报错
错误为:
输出:
结论:开启复用后,tf.get_variable() 生成的变量,会被复用,但值是第一次赋值的那个值。
1. tf.Variable() 方法
例:我们让两个变量name相同,看tensorflow怎么处理。输入:
var1 = tf.Variable(initial_value=0.0, name="var") var2 = tf.Variable(initial_value=0.1, name="var") print(var1.name) print(var2.name) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print(var1.eval()) print(var2.eval())
输出:
var:0 var_1:0 0.0 0.1
可以看到,虽然我们把两个变量名字都取作‘var’,但是第二个被自动重命名为‘var_1’。
结论:使用 tf.Variable() 方法时不用担心名字冲突,框架会自动处理。
2. tf.get_variable()方法
根据在tensorflow命名空间内是否开启自动变量复用(reuse=tf.AUTO_REUSE)分为两种情况:
2.1. 不开启变量复用
输入:with tf.variable_scope("scope0"): var1 = tf.get_variable("var", initializer=tf.constant(0.0)) var2 = tf.get_variable("var", initializer=tf.constant(1.0))
输出:报错
错误为:
with tf.variable_scope("scope1", reuse=tf.AUTO_REUSE):
2.2. 开启变量复用
输入:with tf.variable_scope("scope1", reuse=tf.AUTO_REUSE): var1 = tf.get_variable("var", initializer=tf.constant(0.0)) var2 = tf.get_variable("var", initializer=tf.constant(1.0)) print(var1.name) print(var2.name) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print(var1.eval()) print(var2.eval())
输出:
scope1/var:0 scope1/var:0 0.0 0.0 # 还是0.0,还是第一次声明的值
结论:开启复用后,tf.get_variable() 生成的变量,会被复用,但值是第一次赋值的那个值。
相关文章推荐
- tf.variable和tf.get_Variable以及tf.name_scope和tf.variable_scope的区别
- tensorflow的共享变量,tf.Variable(),tf.get_variable(),tf.Variable_scope(),tf.name_scope()联系与区别
- tensorflow的共享变量,tf.Variable(),tf.get_variable(),tf.Variable_scope(),tf.name_scope()联系与区别:
- tf.Variable()和tf.get_variable()的使用方法和相同点
- 【tensorflow 学习】tf.get_variable()和tf.Variable()的区别
- tensorflow的共享变量,tf.Variable(),tf.get_variable(),tf.Variable_scope(),tf.name_scope()联系与区别
- 【tensorflow】scope的使用以及tf.Variable()和tf.get_variable()的区别
- tensorflow共享变量, tf.get_variable() 和 tf.Varibele()的区别
- hibernate中load和get方法的区别
- HTTP 方法GET 和 POST区别
- getCanonicalHostName方法和getHostName方法的区别
- 解析HTTP协议六种请求方法:get,head,put,delete,post有什么区别
- 【我的笔记BLOG4】搭建多人博客<内含http请求的get post方法区别>
- tf.get_variable和tf.Variable函数差别
- document.getElementById方法在Firefox与IE中的区别
- Hibernate中get和load方法的区别以及close(),clear()、evict()等的区别
- Hibernate中get方法和load方法的区别
- HTTP中GET与POST方法的区别
- Hibernate的load()、get()、list()、iterator()方法的区别
- BeautifulSoup中的.text方法和get_text()方法的区别