2022-02-23
tf. tf 之间的区别。和 tf。就是前者有变量检查机制,会检测一个已有变量是否设置为共享变量。如果现有变量没有设置为共享变量,会一直运行,直到第二个具有相同的变量名时,才会报错。后者会直接复制生成新的变量。
import tensorflow as tf with tf.variable_scope('a_1'): a = tf.Variable(1, name='a') b = tf.Variable(1, name='a') print(a.name) # a_1/a:0 print(b.name) # a_1/a_1:0 c = tf.get_variable('a', 1) print(c.name) # a_1/a_2:0 d = tf.get_variable('a', 1) print(d.name) # ValueError: Variable a_1/a already exists, disallowed. #Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at:
为了解决以上问题,tf.提出函数:它的主要作用是在一个作用域内共享一些变量,这些变量可以通过reuse来复用。
import tensorflow as tf with tf.variable_scope("a_1"): a = tf.get_variable("v", [1]) print(a.name) # a_1/v:0 with tf.variable_scope("a_1", reuse = True): #注意reuse的作用。 c = tf.get_variable("v", [1]) print(c.name) # a_1/v:0 print(a is c) # True, 两个变量重用了,变量地址一致
对于 tf.,tf.只能控制tf的名字。函数操作Ops,但不是变量名,但是他可以控制tf.创建的变量,看下面的例子:
import tensorflow as tf with tf.name_scope('a_1'): with tf.name_scope('a_2'): with tf.variable_scope('a_3'): d = tf.Variable(1, name='d') d_1 = tf.Variable(1, name='d') d_get = tf.get_variable('d', 1) x = 1.0 + d_get print(d.name) #输出a_1/a_2/a_3/d:0 print(d_1.name) #输出a_1/a_2/a_3/d_1:0 print(d_get.name) #输出a_3/d:0 print(x.name) # 输出a_1/a_2/a_3/add:0 with tf.variable_scope('a_3'): e = tf.Variable(1, name='d') print(e.name) #输出a_1/a_2/a_3_1/d:0
参考:1.
2.
分类:
技术要点:
相关文章:
© 版权声明
本站下载的源码均来自公开网络收集转发二次开发而来,
若侵犯了您的合法权益,请来信通知我们1413333033@qq.com,
我们会及时删除,给您带来的不便,我们深表歉意。
下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,访问及下载者下载默认同意本站声明的免责申明,请合理使用切勿商用。
THE END
暂无评论内容