zoukankan      html  css  js  c++  java
  • 5.3 变量管理

    TensorFlow的变量初始化函数

    初始化函数 功能 主要参数
    tf.constant_initializer 将变量初始化为给定常量 常量的取值
    tf.random_normal_initializer 将变量初始化为满足正态分布的随机值 正态分布的均值和标准差
    tf.truncated_normal_initializer 将变量初始化为满足正太分布的随机值,但如果随机出来的值离平均值超过2个标准差,那么这个数将被重新随机。 正态分布的均值和标准差
    tf.random_uniform_initializer 将变量初始化为满足平均分布的随机值 最大、最小值
    tf.uniform_unit_scaling_initializer 将变量初始化为满足平均分布但不影响输出数量级的随机值 factor(产生随机值时乘以的系数)
    tf.zeros_initializer 将变量设置为全0 变量维度
    tf.ones_initializer 将变量设置为全1 变量维度
    #下面这两个定义是等价的
    v = tf.get_variable("v", shape = [1], initialzer = tf.constant_initializer(1.0))
    v = tf.Variable(tf.constant(1.0, shape = [1]), name = "v")
    

       tf.get_variable函数与tf.Variable函数最大的区别在于指定变量名称的参数。对于tf.Variable函数,变量名称是一个可选的参数,通过name = "v"的形式给出。但是对于tf.get_variable函数,变量名称是一个必填的参数。tf.get_variable会根据这个名字取创建或者获取变量。在上述示例程序中,tf.get_variable首先会视图创建一个名字为v的参数,如果创建失败(比如已经有同名的参数),那么这个程序就会报错。这是为了避免无意识的变量复用造成的错误。

      如果需要通过tf.get_variable获取一个已经创建的变量,需要通过tf.variable_scope函数来生成一个上下文管理器,并明确指定在这个上下文管理器中,tf.get_variable将直接获取已经生成的变量。

    #在名字为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])
    
    #生成上下文管理器时,将reuse设置为True。这样tf。get_varibale函数将直接获取已经声明的变量
    with tf.variable_scope("foo", reuse = True):
        v1 = tf.get_variable("v", [1])
        print(v == v1)
    
    #将参数reuse设置为True时,代表v, v1代表的是相同的TensorFlow中变量
    #命名空间bar中还没有创建变量v,所以下面代码会报错
    with tf.variable_scope("bar", reuse = True):
        v = tf.get_variable("v", [1])
    

      上述样例说明了通过tf.variable_scope函数可以控制tf.get_variable函数的语义。当tf.variable_scope函数使用参数reuse = True生成上下文管理器时,这个上下文管理器内所有的tf.get_variable函数会直接获取已经创建的变量。如果变量不存在,则tf.get_variable函数会报错。相反,如果tf.variable_scope函数使用餐胡reuse = None或者reuse = False创建上下文管理器,tf.get_variable操作将创建新的变量。如果同名的变量已经存在则tf.get_variable函数将报错。

  • 相关阅读:
    全面了解 NOSQL
    金融业容灾技术分析
    银行业务知识(转)
    结合工作的业务连续性实践
    金融企业架构
    window 下拉取github项目失败 (Permission denied (publickey))
    vsftpd 配置文件
    nginx下配置虚拟主机
    linux 下安装ftp 并远程连接
    find_in_set
  • 原文地址:https://www.cnblogs.com/CZT-TS/p/11241605.html
Copyright © 2011-2022 走看看