tensorflow变量详明【www.35222.com】

 新闻中心     |      2019-12-16 19:11

TensorFlow变量管理详细解释,tensorflow变量详整

www.35222.com,风度翩翩、TensorFlow变量管理

1. TensorFLow还提供了tf.get_variable函数来创设可能得到变量,tf.variable用于成立变量时,其信守和tf.Variable基本是等价的。tf.get_variable中的早先化方法(initializer)的参数和tf.Variable的最初化进程也就像,initializer函数和tf.Variable的最先化方法是各类对应的,详见下表。

www.35222.com 1

tf.get_variable和tf.Variable最大的区分就在于钦点变量名称的参数。对于tf.Variable函数,变量名称是二个可选的参数,通过name=”v”的方式提交,对于tf.get_variable函数,变量名称是多个必填的参数,tf.get_variable会依照那么些称呼去创建或然得到变量。

2. 通过tf.variable_scope函数能够调控tf.get_variable函数的语义。当tf.variable_scope函数的参数reuse=True生成上下文物处理理器时,该上下文物管理理器内的有着的tf.get_variable函数会直接得到已经创制的变量,假如变量不设有则报错;当tf.variable_scope函数的参数reuse=False或许None时成立的上下文物管理理器中,tf.get_variable函数则直接创设新的变量,若同名的变量已经存在则报错。

3. 另tf.variable_scope函数是能够嵌套使用的。嵌套的时候,若某层上下文物管理理器未评释reuse参数,则该层上下文物处理理器的reuse参数与其外层保持风度翩翩致。

4.tf.variable_scope函数提供了三个处理变量命名空间的主意。在tf.variable_scope中开创的变量,名称.name中名称后面会步向命名空间的称谓,并由此“/”来分隔命名空间的名称和变量的名目。tf.get_variable("foou/baru/u", [1]卡塔尔(قطر‎,能够通过带命名空间名称的变量名来拿到其取名空间下的变量。

二、TensorFlow编制程序演示

import tensorflow as tf 

# 在名字为foo的命名空间内创建名字为v的变量 
with tf.variable_scope("foo"): 
  v = tf.get_variable("v", [1], initializer=tf.constant_initializer(1.0)) 

''''' 
# 因为命名空间foo内已经存在变量v,再次创建则报错 
with tf.variable_scope("foo"): 
  v = tf.get_variable("v", [1]) 
# ValueError: Variable foo/v already exists, disallowed. 
# Did you mean to set reuse=True in VarScope? 
''' 
# 将参数reuse参数设置为True,则tf.get_variable可直接获取已声明的变量 
with tf.variable_scope("foo", reuse=True): 
  v1 = tf.get_variable("v", [1]) 
  print(v == v1) # True 

''''' 
# 当reuse=True时,tf.get_variable只能获取指定命名空间内的已创建的变量 
with tf.variable_scope("bar", reuse=True): 
  v2 = tf.get_variable("v", [1]) 
# ValueError: Variable bar/v does not exist, or was not created with 
# tf.get_variable(). Did you mean to set reuse=None in VarScope? 
''' 

with tf.variable_scope("root"): 
  # 通过tf.get_variable_scope().reuse函数获取当前上下文管理器内的reuse参数取值 
  print(tf.get_variable_scope().reuse) # False 

  with tf.variable_scope("foo1", reuse=True): 
    print(tf.get_variable_scope().reuse) # True 

    with tf.variable_scope("bar1"): 
      # 嵌套在上下文管理器foo1内的bar1内未指定reuse参数,则保持与外层一致 
      print(tf.get_variable_scope().reuse) # True 

  print(tf.get_variable_scope().reuse) # False 

# tf.variable_scope函数提供了一个管理变量命名空间的方式 
u1 = tf.get_variable("u", [1]) 
print(u1.name) # u:0 
with tf.variable_scope("foou"): 
  u2 = tf.get_variable("u", [1]) 
  print(u2.name) # foou/u:0 

with tf.variable_scope("foou"): 
  with tf.variable_scope("baru"): 
    u3 = tf.get_variable("u", [1]) 
    print(u3.name) # foou/baru/u:0 

  u4 = tf.get_variable("u1", [1]) 
  print(u4.name) # foou/u1:0 

# 可直接通过带命名空间名称的变量名来获取其命名空间下的变量 
with tf.variable_scope("", reuse=True): 
  u5 = tf.get_variable("foou/baru/u", [1]) 
  print(u5.name) # foou/baru/u:0 
  print(u5 == u3) # True 
  u6 = tf.get_variable("foou/u1", [1]) 
  print(u6.name) # foou/u1:0 
  print(u6 == u4) # True 

如上正是本文的全部内容,希望对大家的学习抱有利于,也希望我们多多指教帮客之家。

大器晚成、TensorFlow变量处理 1. TensorFLow还提供了tf.get_variable函数来创设也许拿到变量,tf.variable用于创建...

上一篇:5项目教程详解 下一篇:没有了