一、TensorFlow变量管理
1. TensorFLow还提供了tf.get_variable函数来创建或者获取变量,tf.variable用于创建变量时,其功能和tf.Variable基本是等价的。tf.get_variable中的初始化方法(initializer)的参数和tf.Variable的初始化过程也类似,initializer函数和tf.Variable的初始化方法是一一对应的,详见下表。
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"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"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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]