国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

TensorFlow變量管理詳解

2020-02-22 23:23:27
字體:
來源:轉載
供稿:網友

一、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? ''' # 將參數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             
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海城市| 罗甸县| 龙口市| 靖宇县| 沈阳市| 晋宁县| 巴东县| 西青区| 昌乐县| 高清| 寿光市| 新邵县| 澄江县| 冀州市| 盐城市| 石楼县| 肃宁县| 林口县| 同江市| 玉溪市| 湘潭市| 长宁区| 潼南县| 芜湖市| 林州市| 大厂| 聊城市| 天等县| 库尔勒市| 大渡口区| 阿拉善左旗| 萨迦县| 寻甸| 东平县| 东海县| 乌拉特后旗| 梨树县| 平远县| 石河子市| 临邑县| 虞城县|