如果变量存在,函数tf.get_variable()
会返回现有的变量;如果变量不存在,会根据给定形状和初始值创建一个新的变量。
def get_variable(name,
shape=None,
dtype=None,
initializer=None,
regularizer=None,
trainable=True,
collections=None,
caching_device=None,
partitioner=None,
validate_shape=True,
use_resource=None,
custom_getter=None,
constraint=None)
常用参数有:
name:变量名称
shape:变量维度
initializer:变量初始化方式
regularizer:正规化
caching_device:可选的设备字符串或函数描述
还有tf.Variable()
函数,
tf.Variable(initial_value=None,
trainable=True,
collections=None,
validate_shape=True,
caching_device=None,
name=None,
variable_def=None,
dtype=None,
expected_shape=None,
import_scope=None)
两者区别:
1、使用tf.Variable()时,如果检测到命名冲突,系统会自己处理。使用tf.get_variable()时,系统不会处理冲突,而会报错。
2、对于这两个函数的特性,当我们需要共享变量的时候,需要使用tf.get_variable()。在其他情况下,这两个的用法是一样的。