企业设计网站推荐,汕头h5建站,搜索引擎收录提交入口,怎么判断一个网站做的好#xff08;1#xff09;用途
在构建模型时#xff0c;需要使用tf.Variable来创建一个变量#xff08;也可以理解成节点#xff09;。但在某种情况下#xff0c;一个模型需要使用其他模型创建的变量#xff0c;两个模型一起训练。此时需要用到共享变量。这时就是通过引…1用途
在构建模型时需要使用tf.Variable来创建一个变量也可以理解成节点。但在某种情况下一个模型需要使用其他模型创建的变量两个模型一起训练。此时需要用到共享变量。这时就是通过引入get_variable方法实现共享变量来解决这个问题。
2 使用get-variable获取变量
get_variable一般会配合variable_scope一起使用以实现共享变量。variable_scope的意思是变量作用域。在某一作用域中的变量可以被设置成共享的方式被其他网络模型使用。 get_variable函数的定义如下 tf.get_variable(name, shape, initializer)注意 使用get_variable生成的变量是以指定的name属性为唯一标识并不是定义的变量名称。使用时一般通过name属性定位到具体变量并将其共享到其他模型中。
3 get_variable和Variable的区别
Variable
import tensorflow as tf
xtf.Variable(1.0,namev1)
print(x,x的名字为:,x.name)
x2tf.Variable(2.0,namev2)
print(x2,x2的名字为:,x2.name)
with tf.Session() as sess:all_vtf.global_variables_initializer()sess.run(all_v)print(X1,x.eval()) #获取值print(X2,x2.value()) #获取全部信息
注意
Variable定义时没有指定名字系统会自动给加上一个名字Variable:0。
当Variable定义多个相同的变量时图只会当最后一个有效get_variable 16 get_var1 tf.get_variable(firstvar, [1], initializertf.constant_initializer(0.3))17 print (get_var1:, get_var1.name)18# 此时会出错firstvar在前面已经定义如果改为firstvar2则正常19 get_var1 tf.get_variable(firstvar, [1], initializertf.constant_initializer(0.4))20 print (get_var1:, get_var1.name)4在特定的作用域下获取变量
在作用域下使用get_variable以及嵌套variable_scope。在前面的例子中已经知道使用get_variable创建两个同样名字的变量是行不通的如果真的想要那么做可以使用variable_scope将它们隔开代码如下。 import tensorflow as tfwith tf.variable_scope(test1, ): #定义一个作用域test1var1 tf.get_variable(firstvar, shape[2], dtypetf.float32)with tf.variable_scope(test2):var2 tf.get_variable(firstvar, shape[2], dtypetf.float32)print (var1:, var1.name)print (var2:, var2.name)其实variable_scope里面有个reuseTrue属性表示使用已经定义过的变量。这时get_variable将不会再创建新的变量而是去图一个计算任务中get_variable所创建过的变量中找与name相同的变量。 11 with tf.variable_scope(test1, reuseTrue ):12 var3 tf.get_variable(firstvar, shape[2], dtypetf.float32)13 with tf.variable_scope(test2):14 var4 tf.get_variable(firstvar, shape[2], dtypetf.float32)1516 print (var3:, var3.name)17 print (var4:, var4.name)