欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

TensorFLow 變量命名空間實例

 更新時間:2020年02月11日 14:56:37   作者:man_world  
今天小編就為大家分享一篇TensorFLow 變量命名空間實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

一、name_scope

with tf.name_scope(name):

name_scope: 為了更好地管理變量的命名空間而提出的。比如在 tensorboard 中,因為引入了 name_scope, 我們的 Graph 看起來才井然有序。

name_scope 對 get_variable 創(chuàng)建變量的 name 沒有影響,即 get_variable 創(chuàng)建的變量不在 name_scope 這個命名空間中

二、variable_scope

with tf.variable_scope(name_or_scope, reuse=None):

variable_scope: 大部分情況下,跟 tf.get_variable() 配合使用,實現(xiàn)變量共享的功能

可通過tf.get_variable_scope().reuse == True/False 判斷參變量是否共享

當前變量作用域可以用tf.get_variable_scope()進行檢索并且reuse 標簽可以通過調(diào)用tf.get_variable_scope().reuse_variables()設置為True

三、共享參變量

1、方法

使用 tf.Variable() 創(chuàng)建同一個 name 的變量(操作名不同),均不會報錯,但系統(tǒng)會自動修改 name(實質(zhì)還是不讓共享參變量)

使用 tf.get_varible() 創(chuàng)建同一個 name 的變量(操作名不同),均會報錯(為了避免無意識的參變量復用造成的錯誤)

我們可以在 variable_scope 中使用 tf.get_variable() 創(chuàng)建變量,并通過 with tf.variable_scope(name_or_scope, reuse=True) 來共享參變量:

reuse=True:將只能獲取命名空間中已經(jīng)創(chuàng)建過的變量,如果變量不存在,則tf.get_variable函數(shù)將報錯。

reuse=None / False:tf.get_variable操作將創(chuàng)建新的變量,如果同名的變量已經(jīng)存在,則tf.get_variable函數(shù)將報錯。

2、代碼示例

# 下面是定義一個卷積層的通用方式
def conv_relu(input, kernel_shape, bias_shape):
  # Create variable named "weights".
  weights = tf.get_variable("weights", kernel_shape,
    initializer=tf.random_normal_initializer())
  # Create variable named "biases".
  biases = tf.get_variable("biases", bias_shape,
    initializer=tf.constant_intializer(0.0))
  conv = tf.nn.conv2d(input, weights,
    strides=[1, 1, 1, 1], padding='SAME')
  return tf.nn.relu(conv + biases)


# 定義一個圖片過濾器
def my_image_filter(input_images):
  with tf.variable_scope("conv1"):
    # Variables created here will be named "conv1/weights", "conv1/biases".
    relu1 = conv_relu(input_images, [5, 5, 32, 32], [32])
  with tf.variable_scope("conv2"):
    # Variables created here will be named "conv2/weights", "conv2/biases".
    return conv_relu(relu1, [5, 5, 32, 32], [32])


# 實驗一:調(diào)用 my_image_filter() 兩次
result1 = my_image_filter(image1)
result2 = my_image_filter(image2)
>>> Raises ValueError(... conv1/weights already exists ...), tf.get_variable()會檢測已經(jīng)存在的變量是否已經(jīng)共享


# 解決方法一, 可以在設計網(wǎng)絡時加上一個布爾型的 reuse 參數(shù) 
with tf.variable_scope("image_filters"):
  result1 = my_image_filter(image1)
with tf.variable_scope("image_filters", reuse=True):
  result2 = my_image_filter(image2)


# 解決方法二
with tf.variable_scope("image_filters") as scope:
  # 下面我們兩次調(diào)用 my_image_filter 函數(shù),但是由于引入了變量共享機制
  # 可以看到我們只是創(chuàng)建了一遍網(wǎng)絡結構。
  result1 = my_image_filter(image1)
  scope.reuse_variables()
  result2 = my_image_filter(image2)


# 解決方法三
with tf.variable_scope("image_filters") as scope:
  result1 = my_image_filter(image1)
with tf.variable_scope(scope, reuse=True):
  result2 = my_image_filter(image2)


# 打印出所有的可訓練參變量
vs = tf.trainable_variables()
print('There are %d trainable_variables in the Graph: ' % len(vs))
for v in vs:
  print(v)


# 輸出結果證明確實:參變量共享,因為只有四個變量,沒有創(chuàng)建新的變量。
There are 4 trainable_variables in the Graph: 
Tensor("image_filters/conv1/weights/read:0", shape=(5, 5, 32, 32), dtype=float32)
Tensor("image_filters/conv1/biases/read:0", shape=(32,), dtype=float32)
Tensor("image_filters/conv2/weights/read:0", shape=(5, 5, 32, 32), dtype=float32)
Tensor("image_filters/conv2/biases/read:0", shape=(32,), dtype=float32)

四、取出所有可訓練參數(shù)

# Returns all variables created with trainable=True in a var_list
var_list = tf.trainable_variables()

init = tf.global_variables_initializer()
sess.run(init)

for var in var_list:
  sess.run(var)

以上這篇TensorFLow 變量命名空間實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python多進程寫入同一文件的方法

    Python多進程寫入同一文件的方法

    今天小編就為大家分享一篇Python多進程寫入同一文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 解決python給列表里添加字典時被最后一個覆蓋的問題

    解決python給列表里添加字典時被最后一個覆蓋的問題

    今天小編就為大家分享一篇解決python給列表里添加字典時被最后一個覆蓋的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python使用grequests(gevent+requests)并發(fā)發(fā)送請求過程解析

    Python使用grequests(gevent+requests)并發(fā)發(fā)送請求過程解析

    這篇文章主要介紹了Python使用grequests并發(fā)發(fā)送請求過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • Python調(diào)用pytdx的代碼示例

    Python調(diào)用pytdx的代碼示例

    本文主要介紹了Python調(diào)用pytdx的代碼示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • AUC計算方法與Python實現(xiàn)代碼

    AUC計算方法與Python實現(xiàn)代碼

    今天小編就為大家分享一篇AUC計算方法與Python實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python中requests模塊的請求參數(shù)詳解

    Python中requests模塊的請求參數(shù)詳解

    這篇文章主要介紹了Python中requests模塊的請求參數(shù)詳解,requests模塊是一個網(wǎng)絡請求模塊,可以幫助我們模擬成客戶端去請求服務器的數(shù)據(jù),我們今天就是主要針對這個模塊進行學習,需要的朋友可以參考下
    2023-08-08
  • Python初學者需要注意的事項小結(python2與python3)

    Python初學者需要注意的事項小結(python2與python3)

    這篇文章主要介紹了Python初學者需要注意的事項小結,包括了python2與python3的一些區(qū)別,需要的朋友可以參考下
    2018-09-09
  • Python 3.7新功能之dataclass裝飾器詳解

    Python 3.7新功能之dataclass裝飾器詳解

    這篇文章主要給大家介紹了關于Python 3.7新功能之dataclass裝飾器的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-04-04
  • Python實現(xiàn)控制臺中的進度條功能代碼

    Python實現(xiàn)控制臺中的進度條功能代碼

    下面小編就為大家分享一篇Python實現(xiàn)控制臺中的進度條功能代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Python繪制動態(tài)的521玫瑰花

    Python繪制動態(tài)的521玫瑰花

    敲了這么多年代碼,每年都得畫一些心啊花啊什么的,所以現(xiàn)在常規(guī)的已經(jīng)有些倦怠了,至少也得來個三維圖形才看著比較合理,所以本文就來繪制一個動態(tài)的玫瑰花吧
    2023-05-05

最新評論