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

python神經(jīng)網(wǎng)絡(luò)tf.name_scope和tf.variable_scope函數(shù)區(qū)別

 更新時間:2022年05月04日 11:16:28   作者:Bubbliiiing  
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)tf.name_scope和tf.variable_scope函數(shù)的使用區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

學(xué)習(xí)前言

最近在學(xué)目標(biāo)檢測……SSD的源碼好復(fù)雜……看了很多版本的SSD源碼,發(fā)現(xiàn)他們會使用tf.variable_scope,剛開始我還以為就是tf.name_scope,才發(fā)現(xiàn)原來兩者是不一樣的

兩者區(qū)別

tf.name_scope()和tf.variable_scope()是兩個作用域,一般與兩個創(chuàng)建/調(diào)用變量的函數(shù)tf.variable() 和tf.get_variable()搭配使用。

為什么要使用兩個不同的作用域方式呢?其主要原因與變量共享相關(guān)。

變量共享主要涉及兩個函數(shù):tf.Variable() 和tf.get_variable()

在tf.variable_scope的作用域下需要使用tf.get_variable()函數(shù),這是因?yàn)閠f.get_variable()擁有一個變量檢查機(jī)制,會檢測已經(jīng)存在的變量是否設(shè)置為共享變量,當(dāng)同名變量存在共享機(jī)制時,不會報(bào)錯,如果并未設(shè)置為共享變量,則報(bào)錯。

如果使用tf.Variable() 的話每次都會新建變量。但是很多時候我們希望重用一些變量,所以我們使用到了get_variable(),它會去搜索變量名,有就直接用,沒有再新建。
在進(jìn)行變量共享的時候需要使用到標(biāo)志reuse,當(dāng)reuse = True時是可以共享,F(xiàn)alse時不可以共享。

tf.variable_scope函數(shù)

tf.variable_scope(
    name_or_scope,
    default_name=None,
    values=None,
    initializer=None,
    regularizer=None,
    caching_device=None,
    partitioner=None,
    custom_getter=None,
    reuse=None,
    dtype=None,
    use_resource=None,
    constraint=None,
    auxiliary_name_scope=True
)

其中:

1、name_or_scope:范圍的名稱。

2、default_name:如果name_or_scope參數(shù)為None,則使用默認(rèn)的名稱,該名稱將是唯一的;如果提供了name_or_scope,它將不會被使用,因此它不是必需的,并且可以是None。

3、values:傳遞給操作函數(shù)的Tensor參數(shù)列表。

4、initializer:此范圍內(nèi)變量的默認(rèn)初始值設(shè)定項(xiàng)。

5、regularizer:此范圍內(nèi)變量的默認(rèn)正規(guī)化器。

6、caching_device:此范圍內(nèi)變量的默認(rèn)緩存設(shè)備。

7、partitioner:此范圍內(nèi)變量的默認(rèn)分區(qū)程序。

8、custom_getter:此范圍內(nèi)的變量的默認(rèn)自定義吸氣。

9、reuse:可以是True、None或tf.AUTO_REUSE;如果是True,即可以開始共享變量,變量重構(gòu)用;如果是tf.AUTO_REUSE,則我們創(chuàng)建變量(如果它們不存在),否則返回它們(用于在第一輪創(chuàng)建變量);如果是None,則我們繼承父范圍的重用標(biāo)志。

10、dtype:在此范圍中創(chuàng)建的變量類型。

測試代碼

1、使用reuse=True共享變量

import tensorflow as tf
# 初始化第一個v1
with tf.variable_scope("scope1"):
    v1 = tf.get_variable("v1",[3,3],tf.float32,initializer=tf.constant_initializer(1))
    print(v1.name)
# 不同的作用域
with tf.variable_scope("scope2"):
    v1 = tf.get_variable("v1",[3,3],tf.float32,initializer=tf.constant_initializer(1))
    print(v1.name)
# 開始共享
with tf.variable_scope("scope1",reuse = True):
    v1_share = tf.get_variable("v1",[3,3],tf.float32,initializer=tf.constant_initializer(1))
    print(v1_share.name)

運(yùn)行結(jié)果為:

scope1/v1:0
scope2/v1:0
scope1/v1:0

如果在下部再加上

with tf.variable_scope("scope2"):
    v1_share = tf.get_variable("v1",[3,3],tf.float32,initializer=tf.constant_initializer(1))
    print(v1_share.name)

此時沒有reuse,不能共享,程序報(bào)錯。

2、使用AUTO_REUSE共享變量

import tensorflow as tf
# 使用AUTO_REUSE可以直接創(chuàng)建
# 如果reuse = True,初始化第一輪創(chuàng)建的時候會報(bào)錯
def demo():
  with tf.variable_scope("demo", reuse=tf.AUTO_REUSE):
    v = tf.get_variable("v", [1])
  return v
v1 = demo() 
v2 = demo()
print(v1.name)

運(yùn)行結(jié)果為:

demo/v:0
demo/v:0

以上就是python神經(jīng)網(wǎng)絡(luò)tf.name_scope和tf.variable_scope函數(shù)區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于tf.name_scope和tf.variable_scope的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python自動發(fā)送郵件的方法實(shí)例總結(jié)

    Python自動發(fā)送郵件的方法實(shí)例總結(jié)

    這篇文章主要介紹了Python自動發(fā)送郵件的方法,結(jié)合實(shí)例形式總結(jié)分析了Python使用smtplib和email模塊發(fā)送郵件的相關(guān)使用技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2018-12-12
  • Python快速排序算法實(shí)例分析

    Python快速排序算法實(shí)例分析

    這篇文章主要介紹了Python快速排序算法,簡單說明了快速排序算法的原理、實(shí)現(xiàn)步驟,并結(jié)合具體實(shí)例分析了Python實(shí)現(xiàn)快速排序的相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • python使用turtle庫繪制樹

    python使用turtle庫繪制樹

    這篇文章主要為大家詳細(xì)介紹了python使用turtle庫繪制樹,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python?查看數(shù)據(jù)類型與格式

    Python?查看數(shù)據(jù)類型與格式

    這篇文章主要介紹了Python?查看數(shù)據(jù)類型與格式方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 一文帶你掌握Python自然語言處理庫SpaCy

    一文帶你掌握Python自然語言處理庫SpaCy

    SpaCy是一個非常強(qiáng)大的Python自然語言處理庫,它包含了眾多強(qiáng)大功能,如詞性標(biāo)注、命名實(shí)體識別、依賴關(guān)系解析等等,這篇文章的目標(biāo)是幫助你了解SpaCy的基本功能和如何使用,需要的朋友可以參考下
    2023-07-07
  • 關(guān)于pyqt5彈出提示框的詳細(xì)介紹

    關(guān)于pyqt5彈出提示框的詳細(xì)介紹

    在實(shí)際的程序開發(fā)中經(jīng)常會用到各種各樣的消息框來給用戶一些提示或提醒,下面這篇文章主要給大家介紹了關(guān)于pyqt5彈出提示框的詳細(xì)介紹,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Python使用pyaudio實(shí)現(xiàn)錄音功能

    Python使用pyaudio實(shí)現(xiàn)錄音功能

    pyaudio是一個跨平臺的音頻I/O庫,使用PyAudio可以在Python程序中播放和錄制音頻,本文將利用它實(shí)現(xiàn)錄音功能,并做到停止說話時自動結(jié)束
    2023-05-05
  • pycharm 激活碼及使用方式的詳細(xì)教程

    pycharm 激活碼及使用方式的詳細(xì)教程

    這篇文章主要介紹了pycharm 激活碼及使用方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 利用python制作拼圖小游戲的全過程

    利用python制作拼圖小游戲的全過程

    這篇文章主要給大家介紹了關(guān)于利用python制作拼圖小游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 在Python中將元組轉(zhuǎn)換為列表的方法詳解

    在Python中將元組轉(zhuǎn)換為列表的方法詳解

    這兩種Python 數(shù)據(jù)類型看起來很相似,但在上下文中卻有不同的用法,元組和列表之間的主要區(qū)別在于它們的可變性,僅當(dāng)您需要修改元素時才會將元組轉(zhuǎn)換為列表,本文現(xiàn)在我們將深入研究將元組轉(zhuǎn)換為列表的不同方法,需要的朋友可以參考下
    2023-09-09

最新評論