• tensorflow的变量作用域


    一、由来

    深度学习中需要使用大量的变量集,以往写代码我们只需要做全局限量就可以了,但在tensorflow中,这样做既不方便管理变量集,有不便于封装,因此tensorflow提供了一种变量管理方法:变量作用域机制

    二、两个重要API

    tf.get_variable(name, shape=None)        # 根据给定的名字创建或返回一个变量

    tf.variable_scope(name_or_scope, reuse=None)  # 将name_or_scope下的所有变量组成一个命名空间  

    三、解读

    先说第一个API

    tf.get_variable(name, shape=None)这个方法在建立变量时与tf.Variable()完全相同,区别在于它还会搜索是否有同名变量;

    1 import tensorflow as tf
    2 
    3 
    4 with tf.variable_scope('const'):
    5     a = tf.get_variable('a', [1], initializer=tf.constant_initializer(1.))

    再说第二个API

    这个方法最重要的参数时reuse,有三个取值:None、True、tf.AUTO_REUSE

    reuse = None:继承父类的reuse标志

    reuse = True:只能复用,不能创建

     1 import tensorflow as tf
     2 
     3 
     4 with tf.variable_scope('const'):
     5     a = tf.get_variable('a', [1])
     6 
     7 with tf.variable_scope('const', reuse=tf.AUTO_REUSE):
     8     b = tf.get_variable('a', [1])
     9 
    10 print(a==b)     # True

    reuse = tf.AUTO_REUSE:没有就创建,有了就复用,这是最安全的用法

     1 import tensorflow as tf
     2 
     3 
     4 def test():
     5     with tf.variable_scope('const', reuse=tf.AUTO_REUSE):
     6         a = tf.get_variable('a', [1])
     7 
     8     return a
     9 
    10 x = test()  # 没有就创建
    11 y = test()  # 有了就复用
    12 print(x==y)     # True
  • 相关阅读:
    Nginx 配置指令的执行顺序(一)
    缘起 --转
    Nginx 变量漫谈(八)
    Nginx 变量漫谈(七)
    Nginx 变量漫谈(六)
    Windows批量添加防火墙例外端口
    Neo4j 的一些使用心得
    一文教你用 Neo4j 快速构建明星关系图谱
    GemFire 入门篇1:GemFire 是什么?
    数据结构(逻辑结构,物理结构,特点)
  • 原文地址:https://www.cnblogs.com/shuaishuaidefeizhu/p/11200269.html
Copyright © 2020-2023  润新知