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

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

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

瀏覽:118日期: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久久,三上悠亚国产精品一区二区三区
国产高清亚洲| 你懂的网址国产 欧美| 欧美亚洲精品在线| 亚洲免费一区二区| 青青草91久久久久久久久| 久久爱www成人| 久久久水蜜桃av免费网站| 亚洲欧洲一区二区天堂久久| 亚洲精品麻豆| 精品国产一区二区三区av片| 亚洲精品永久免费视频| 欧美中文字幕| 国产精品久久久久久久久久妞妞| 欧美日韩免费看片| 视频在线观看91| 欧美91在线| 国产精品嫩草99av在线| 精品国产乱码久久久久久樱花| 国产一区福利| 久久91导航| 亚洲一区二区免费看| 亚洲免费福利一区| 欧美视频久久| 国产白浆在线免费观看| av资源亚洲| 色综合www| 国产精品av一区二区| 视频一区中文字幕| 国产精品色在线网站| 97精品国产福利一区二区三区| 久久亚洲国产| 日本综合精品一区| 国语对白精品一区二区| 亚洲国产综合在线看不卡| 亚洲欧美网站在线观看| 国产精品99精品一区二区三区∴ | 日韩免费精品| 日韩欧美自拍| 日本欧美一区二区| 综合一区av| 亚洲一区二区三区高清不卡| 国产三级精品三级在线观看国产| 国产精品久久久久久久久久10秀 | 五月综合激情| 日本欧美在线| 蜜桃成人精品| 日韩精品中文字幕吗一区二区| 岛国精品一区| 午夜在线精品偷拍| 国产精品v一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品hd| 国产视频久久| 婷婷综合六月| 久久久久九九精品影院| 日韩精品欧美大片| 国产亚洲综合精品| 国产在线|日韩| 精品久久精品| 国产精品一区二区美女视频免费看| 伊人久久亚洲热| 日韩欧美另类一区二区| 国产精品红桃| 天堂va欧美ⅴa亚洲va一国产| 久久蜜桃av| 色在线视频观看| 美女视频免费精品| 日本在线不卡视频| 亚洲在线免费| av一区二区高清| 999久久久国产精品| 成人片免费看| 四虎成人av| 高清一区二区三区av| 久久这里只有| 免费视频一区二区三区在线观看| 日本一区福利在线| 亚洲aa在线| 亚洲性视频在线| 蜜臀久久99精品久久久久久9| 91久久黄色| 亚洲激精日韩激精欧美精品| 极品av在线| 成人影视亚洲图片在线| 麻豆高清免费国产一区| 国产精品成人**免费视频| 欧美日韩 国产精品| 日韩av不卡一区二区| 日韩精品第一| 日本成人在线视频网站| 日韩激情av在线| 日韩国产成人精品| 欧美久久一区二区三区| 欧美日一区二区在线观看| 国产欧美一区| 欧美a级一区二区| 麻豆一区二区三| 国产精品久久久久av蜜臀 | 国产精品欧美日韩一区| 国产日韩视频在线| 国产精品igao视频网网址不卡日韩| 国产精品流白浆在线观看| 久久av影视| 欧美丰满日韩| 99国产精品一区二区| 99国产精品久久久久久久| 石原莉奈在线亚洲二区| 亚洲三级网址| 国产亚洲电影| 福利一区和二区| 麻豆精品蜜桃| 欧美日韩视频一区二区三区| 午夜在线精品偷拍| 亚洲a成人v| 国产精品久久乐| 精品视频一区二区三区在线观看| 91嫩草亚洲精品| 91精品亚洲| 天堂av在线一区| 欧美色综合网| 裤袜国产欧美精品一区| 一级欧洲+日本+国产| 亚洲免费福利一区| 国产伦理一区| 黑人精品一区| 婷婷亚洲综合| 中文字幕一区二区三区日韩精品 | 久久国产日本精品| 亚洲激情婷婷| 日本精品在线播放| 国产一区二区三区探花| 激情久久中文字幕| 日韩欧美三区| 色在线视频观看| 久久国产精品99国产| 国产亚洲欧美日韩精品一区二区三区| 精品黄色一级片| 日韩午夜在线| 国产日韩欧美中文在线| 色爱综合网欧美| 欧美专区一区二区三区| 国产精品1区在线| 免费视频亚洲| 国产精品久久久久9999高清| 99久久精品网| 欧美一区91| 伊人精品一区| 国产欧美激情| 婷婷综合网站| 国产精品国码视频| 欧美成人国产| 国产精品任我爽爆在线播放| 999视频精品| 国产日韩欧美三区| 免费污视频在线一区| 日本不卡在线视频| 久久精品影视| 国产精品a久久久久| 99国内精品| 久久香蕉网站| 蜜臀精品久久久久久蜜臀| 国产在线看片免费视频在线观看| 一区二区电影在线观看| 成人福利视频| 国产欧美精品久久| 亚洲特级毛片| 国产精品羞羞答答在线观看| 欧美国产91| 欧美aⅴ一区二区三区视频| 久久一区二区三区电影| 国产精品视频一区二区三区综合 | 久久中文字幕一区二区| 模特精品在线| 日韩久久精品网| 国产日韩欧美| 亚洲一区二区三区高清| 激情国产在线| 国产精品久久久久久久久免费高清| 国产一区欧美| 国产中文字幕一区二区三区| 四虎精品一区二区免费| 久久精品亚洲人成影院| 国产精品网站在线看| 水野朝阳av一区二区三区| 成人日韩在线| 久久精品国产99| 日韩激情网站| 视频一区视频二区在线观看| 青青久久av| 成人高清一区| 国产精品sss在线观看av| 亚洲一区二区免费在线观看| 久久精品亚洲人成影院| 精品视频在线观看网站| 日韩欧乱色一区二区三区在线| 精品中文一区| 在线一区av| 久久wwww| 欧美中文高清| 视频一区欧美精品|