日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

聊聊python的gin庫的介紹和使用

瀏覽:122日期:2022-06-21 17:17:35
1.簡介

由于現在很多機器學習的實驗需要設置繁瑣的參數,在多次實驗中,有些參數是一樣的,為了方便設置參數,Gin庫出現了。它允許函數或類被注釋為@gin.configurable,這使得能夠使用清晰而強大的語法通過簡單的配置文件來設置它們的參數。這種方法減少了配置維護,同時使實驗配置透明且易于重復。

簡單理解,gin像一個封裝了參數配置的類,使用這個類將使得大量的參數配置變得簡單清晰

安裝

pip install gin-config2.@gin.configurable

任何函數和類都可以使用@gin.configurable裝飾器

@gin.configurabledef my_network(images, num_outputs, num_layers=3, weight_decay=1e-4): ...

@gin.configurable裝飾器做了如下三件事:

把類或函數聲明成了可配置的東西 它決定了函數或類構造函數的哪些參數是可配置的(默認情況下是其所有的參數) 封裝類或函數,攔截調用,并向函數的可配置參數提供來自參數設置全局注冊表的值(這些值是類或函數聲明時沒有指定的值)

為了確定哪些是可以配置的參數,@gin.configurable會使用到allowlist和denylist參數,分別聲明哪些是可配的哪些是不可配的,我們通常用一個即可,默認沒有用allowlist指定的都為不可配,反之亦然。

@gin.configurable(’supernet’, denylist=[’images’])def my_network(images, num_outputs, num_layers=3, weight_decay=1e-4): ...

其中supernet是我們指定的配置名。

3.賦值

我們使用如下兩種格式給參數賦值:

gin.bind_parameter(’configurable_name.parameter_name’, value)configurable_name.parameter_name = value

具體例子分別如下:

gin.bind_parameter(’supernet.num_layers’, 5)gin.bind_parameter(’supernet.weight_decay’, 1e-3)

supernet.num_layers = 5supernet.weight_decay = 1e-34.取值

我們可以用gin.query_parameter來取值,具體例子如下

num_layers = gin.query_parameter(’supernet.num_layers’)weight_decay = gin.query_parameter(’supernet.weight_decay’)5.配置參考文件

假如我們有以下代碼:

@gin.configurableclass DNN(object): def __init__(self, num_units=(1024, 1024)): ... def __call__(inputs, num_outputs): ...@gin.configurable(denylist=[’data’])def train_model(network_fn, data, learning_rate, optimizer): ...

我們可以在gin文件里配置參數:

train_model.network_fn = @DNN() # An instance of DNN is passed.train_model.optimizer = @MomentumOptimizer # The class itself is passed.train_model.learning_rate = 0.001DNN.num_units = (2048, 2048, 2048)MomentumOptimizer.momentum = 0.9

上面顯示了兩種配置參數風格。@DNN()和@MomentumOptimizer。對于前者將會調用DNN類的實例參數,且每次參數配置都會隨著每個DNN類的實例變動。對于后者將會調用類MomentumOptimizer的默認參數。

6.使用gin文件

我們經常會和absl下flags一起使用gin,比如下面這樣

from absl import flagsflags.DEFINE_multi_string( ’gin_file’, None, ’List of paths to the config files.’)flags.DEFINE_multi_string( ’gin_param’, None, ’Newline separated list of Gin parameter bindings.’)FLAGS = flags.FLAGS

然后主程序main.py里最先解析參數:

gin.parse_config_files_and_bindings(FLAGS.gin_file, FLAGS.gin_param)

假設我們參數文件example.gin在當前目錄下,則運行時,我們在終端輸入python main.py --gin_file=example.gin

也可以在代碼里改成這樣:

flags.DEFINE_multi_string( ’gin_file’, ['example.gin'], ’List of paths to the config files.’)

然后直接運行

6.調用其他類或函數

我們可以用下面代碼調用其他類或函數的參數,甚至這個類或函數可以在其他項目里。

gin.external_configurable(tf.train.MomentumOptimizer)7.范圍限定

當一個可配置函數在程序執行過程中被多次調用時,可能需要為每次調用提供不同的參數綁定。Gin提供了一個范圍限定機制來促進這一點。例如,假設我們想要實現一個GAN,我們必須交替訓練一個生成器和一個鑒別器。在Tensoflow中,這最容易通過兩個優化器來實現,因此我們可能有這樣一個函數:

gin.external_configurable(tf.train.GradientDescentOptimizer)@gin.configurable(allowlist=[’generator_optimizer’, ’discriminator_optimizer’])def gan_trainer( generator_loss, generator_vars, generator_optimizer, discriminator_loss, discriminator_vars, discriminator_optimizer): # Construct the optimizers and minimize w.r.t. the correct variables. generator_train_op = generator_optimizer().minimize( generator_loss, generator_vars) discriminator_train_op = discriminator_optimizer().minimize( discriminator_loss, discriminator_vars) ...

我們如何將generator_optimizer和discriminator_optimizer都配置為@GradientDescentOptimizer,但具有不同的學習速率?下面是個錯誤示范:

# Won’t work!gan_trainer.generator_optimizer = @GradientDescentOptimizerGradientDescentOptimizer.learning_rate = 0.01gan_trainer.discriminator_optimizer = @GradientDescentOptimizer# This binding will overwrite the previous one:GradientDescentOptimizer.learning_rate = 0.001

Gin提供了一個范圍界定機制來處理這種情況。任何可配置引用的前面都可以有一個作用域名稱,用/字符與可配置名稱分開。同樣,也可以通過在可配置名稱前面加上一個范圍名稱來應用特定于某個范圍的綁定。下面是對的示范:

# This will work! Use scoping to apply different parameter bindings.gan_trainer.generator_optimizer = @generator/GradientDescentOptimizergan_trainer.discriminator_optimizer = @discriminator/GradientDescentOptimizergenerator/GradientDescentOptimizer.learning_rate = 0.01discriminator/GradientDescentOptimizer.learning_rate = 0.0018.標記gin參數

Gin允許您指示在Gin配置中必須提供某些參數。這可以通過兩種方式實現:1.在函數的調用位置2.在函數的簽名中

當調用一個可配置時,您可以通過gin.REQUIRED標記任何arg或kwarg。所需對象:

my_network(images, gin.REQUIRED, num_layers=5, weight_decay=gin.REQUIRED)

將在調用時檢查所需參數。如果沒有為這些參數提供Gin綁定,將會引發一個錯誤,列出缺少的參數綁定以及需要它們的可配置名稱。定義可配置時,可以使用gin.REQUIRED將參數標記為必需的:

@gin.configurabledef run_training(model_dir=gin.REQUIRED, network=gin.REQUIRED, ...): ...9.從Gin文件中導入模塊

import some.module.spec10.在Gin文件中調用另一個Gin文件參數

一個Gin文件可以包含其他Gin文件,這樣可以更容易地將一個配置拆分成單獨的組件(例如,一個“基礎”配置,它被其他派生配置包含和修改)。包含另一個Gin文件可以使用以下語法完成:

include ’path/to/another/file.gin’11.Gin “macros”

有時一個值應該在多個綁定之間共享。為了實現這一點并避免多次重復該值(導致維護負擔),Gin提供了以下預定義的可配置功能:

@gin.configurabledef macro(value): return value

可以引用“宏”函數(通過“()”來取值)。例如:

num_layers/macro.value = 10network.num_layers = @num_layers/macro()

也可以這樣寫

num_layers = 10network.num_layers = %num_layers12.常量

gin.constant函數可用于定義常量,這些常量可通過上述宏語法訪問。例如,在Python中:

gin.constant(’THE_ANSWER’, 42)

然后在配置文件gin中

meaning.of_life = %THE_ANSWER

請注意,任何Python對象都可以用作常量的值(包括不能表示為Gin文字的對象)。值將被存儲到Gin內部字典中,直到程序終止,因此避免創建具有有限生命周期的值的常數。一個消除歧義的模塊可以放在常量名稱的前面。例如:

gin.constant(’some.modules.PI’, 3.14159)13.實驗使用多個Gin文件和額外的命令行綁定

在許多情況下,可以定義多個包含實驗整體配置不同部分的Gin文件。對整體配置的額外“調整”可以通過命令行標志作為單獨的綁定來傳遞。

一種推薦的方法是創建一個包含多個Gin配置的文件夾,然后創建一個包含以下內容的BUILD文件:

filegroup( name = 'gin_files', srcs = glob(['*.gin']), visibility = [':internal'],)

此filegroup可用作二進制文件中的數據依賴項:

data = ['//path/to/configs:gin_files',]

在二進制文件中,可以定義以下標志:

from absl import flagsflags.DEFINE_multi_string( ’gin_file’, None, ’List of paths to the config files.’)flags.DEFINE_multi_string( ’gin_param’, None, ’Newline separated list of Gin parameter bindings.’)FLAGS = flags.FLAGS

然后用Gin解析它們:

gin.parse_config_files_and_bindings(FLAGS.gin_file, FLAGS.gin_param)

最后,二進制文件可以運行為:

.../run_gin_eval --gin_file=$CONFIGS_PATH/cartpole_balance.gin --gin_file=$CONFIGS_PATH/base_dqn.gin --gin_file=$CONFIGS_PATH/eval.gin --gin_param=’evaluate.num_episodes_eval = 10’ --gin_param=’evaluate.generate_videos = False’ --gin_param=’evaluate.eval_interval_secs = 60’

到此這篇關于python的gin庫的介紹和使用的文章就介紹到這了,更多相關python gin庫內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
老司机免费视频一区二区| 蜜臀av免费一区二区三区| 欧美日韩视频| 欧美综合另类| 欧美美女一区| 免费日韩av片| 亚洲精品乱码| 欧美日韩伊人| 国产aⅴ精品一区二区四区| 久久久久亚洲精品中文字幕| 欧美精品97| 欧美黑人巨大videos精品| 福利一区二区三区视频在线观看| 高清不卡亚洲| 久久精品国语| 日韩欧美一区二区三区免费看| 国产网站在线| 免费黄色成人| 日本在线视频一区二区| 精品网站999| 91精品福利| 91精品国产自产在线丝袜啪| 久久不见久久见中文字幕免费| 日韩电影免费网址| 日韩精品一级中文字幕精品视频免费观看 | 国产精品色在线网站| 黄色aa久久| 综合一区在线| 欧洲一级精品| 91大神在线观看线路一区| 精品国产网站| 日韩中文字幕一区二区三区| 日本欧美在线| 秋霞国产精品| 国产精品一线| 亚洲色诱最新| 欧美日韩精品免费观看视欧美高清免费大片| 免费在线欧美视频| 日本在线高清| 日韩三级精品| 久久高清国产| 欧美日韩中文一区二区| 国产精品一区二区三区av麻 | 亚洲欧美日韩专区| av高清不卡| 啪啪亚洲精品| 久久国产88| 黄色成人精品网站| 亚洲a一区二区三区| 日韩成人精品一区二区| 麻豆91精品视频| 国产日韩精品视频一区二区三区| 性欧美精品高清| 激情偷拍久久| 日韩福利一区| 日韩欧美一区二区三区免费观看| 美女视频黄 久久| 国产精品第一| 久久精品av麻豆的观看方式| 免费高清在线一区| 在线观看免费一区二区| 99精品在线免费在线观看| 国产91在线精品| 激情久久99| 久草免费在线视频| 91精品xxx在线观看| 日韩黄色大片网站| 日韩精品看片| 亚洲高清av| 国产亚洲福利| 蜜臀av在线播放一区二区三区| 美女精品在线| 亚洲三级在线| 国产精品视频一区二区三区综合| 国产日韩一区二区三区在线 | 999国产精品视频| 图片区亚洲欧美小说区| 日韩影院精彩在线| 欧美日韩一区二区三区不卡视频| 日韩va亚洲va欧美va久久| 欧美日韩亚洲一区三区| 国产一区调教| 不卡在线一区| 亚洲精品影视| 精品国产亚洲一区二区在线观看| 中文在线а√天堂| 91精品啪在线观看国产18| 亚洲在线观看| 欧美伊人久久| 在线日韩中文| 国产日产精品_国产精品毛片 | 99久久亚洲精品蜜臀| 日韩中文字幕亚洲一区二区va在线| 91亚洲精品在看在线观看高清| 精品一区二区三区四区五区| 图片区亚洲欧美小说区| 国产精品一国产精品k频道56| 色婷婷精品视频| 国产视频一区二| 久久美女性网| 亚洲人成高清| 久久精品动漫| 国产精久久一区二区| 性欧美长视频| 久久蜜桃精品| 久久亚洲国产精品尤物| 99综合视频| 亚洲电影有码| 欧美韩一区二区| 亚州av日韩av| 欧美日韩第一| 在线看片福利| 久久精品国产99| 日韩国产在线观看| 国产精品91一区二区三区| 国产免费播放一区二区| 日韩在线一二三区| 香蕉国产精品| 四虎4545www国产精品 | 日韩不卡一区二区| 日韩在线一二三区| 国产91精品对白在线播放| 精品国产三区在线| 国产精品多人| 中文字幕亚洲精品乱码| 樱桃成人精品视频在线播放| 欧美三区四区| 欧美天堂视频| 日韩中文视频| 欧美日韩亚洲在线观看| 日本欧美不卡| 视频福利一区| 日韩三区免费| 欧美日韩一区二区综合| 欧美亚洲国产一区| 久久裸体视频| 亚洲欧美日韩国产一区| 亚洲欧美一级| 久久精品xxxxx| 久久精品 人人爱| 国产亚洲精品美女久久久久久久久久| 色狠狠一区二区三区| 91在线成人| 国产成人精品一区二区三区视频| 成人精品久久| 欧美精品九九| 日韩av一二三| 国产成人精品三级高清久久91| 久久精品国内一区二区三区水蜜桃| 久久久久久免费视频| 在线观看一区| 久久不见久久见免费视频7| 日韩成人精品一区二区| 国产精品人人爽人人做我的可爱| 亚洲综合日韩| 国产精品网在线观看| 久久久国产亚洲精品| 日韩中文字幕91| 麻豆一区二区99久久久久| 色88888久久久久久影院| 性色一区二区| 成人精品久久| 日本色综合中文字幕| 亚洲一区资源| 日本不卡中文字幕| 日韩毛片在线| 久久不见久久见中文字幕免费| 夜夜嗨网站十八久久| 国产激情欧美| 99国产精品| 国产成人精品一区二区免费看京 | 国产精品大片免费观看| 久久国产精品久久w女人spa| 精品精品久久| 日韩高清在线不卡| 在线看片不卡| 欧美精品高清| 大香伊人久久精品一区二区| 亚洲97av| 日韩精品一级二级| 蜜桃视频在线网站| 国产劲爆久久| 日本a口亚洲| 亚欧成人精品| 日韩影院精彩在线| 亚洲一区亚洲| 在线日韩中文| 亚洲91精品| 欧美91福利在线观看| 亚洲成人精品| 激情久久久久久| 私拍精品福利视频在线一区| а√在线中文在线新版| 日本一区二区高清不卡| 国产精品日本一区二区三区在线 | 国产成人精品亚洲线观看| 欧美国产不卡| 国产精品精品| 色偷偷色偷偷色偷偷在线视频| 中文字幕在线看片|