天天看點

利用python的absl配置參數

将深度學習應用到CV領域必不可少的要搭模組化型,訓練網絡,一般模型搭建為一個py檔案,網絡訓練為一個py檔案,其中網絡訓練需要大量參數設定,比如張量運作的裝置(CPU or GPU),初始學習率,訓練次數,批次大小,圖像裁剪尺寸等等,如果我們在程式中随意定義并初始化這些參數不免顯得程式非常淩亂,而且維護性較差,同時占用記憶體,那麼一個好的方法就是在程式的開頭将其全部聲明和初始化并且打包成一個整體,下面看代碼:

from absl import flags, app

flags.DEFINE_string('參數名', '初始值', '參數的解釋說明') # 定義字元串
flags.DEFINE_integer('參數名', '初始值', '參數的解釋說明') # 定義整型資料
flags.DEFINE_float('參數名', '初始值', '參數的解釋說明') # 定義浮點型資料
flags.DEFINE_boolean('參數名', '初始值', '參數的解釋說明') # 定義布爾型

FLAGS = flags.FLAGS

def train(args):
 """
 """

if __name__ == '__main__':
	app.run(train)
           

另外,還可以從

absl

中導入

logging

logging.info()

輸出日志資訊,打個比方:

logging.info('Conv2D shape: %s', x.shape)

。盡量使用日志列印資訊而不是

print

,日志列印的資訊包含時間、檔案、行數等便于維護和修改,而

print

是不包含這些的。

繼續閱讀