将深度學習應用到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
是不包含這些的。