[乾貨|實踐] Tensorflow學習 - 使用flags定義命令行參數

/* 版權聲明:可以任意轉載,轉載時請務必標明文章原始出處和作者信息 .*/

faiculty: 機器學習、計算機視覺交流群:451429116 nn微信公眾號、知乎專欄、簡書,請搜索: faicultynn本專欄主要為學習記錄,可能綜合了網上各類文章或博客,如有侵權請聯繫本人進行刪除。 nQQ:769412850.nn非常期待各位同學投稿,一起學習。n

學習目的:深度學習神經網路往往有過多的Hyperparameter需要調優,優化演算法、學習率、卷積核尺寸等很多參數都需要不斷調整,使用命令行參數是非常方便的。有兩種實現方式,一是利用python的argparse包,二是調用tensorflow自帶的app.flags實現。

利用tf.app.flags組件

tf定義了tf.app.flags,用於接受命令行傳遞參數,相當於接受argv。首先調用自帶的DEFINE_string,DEFINE_boolean DEFINE_integer, DEFINE_float設置不同類型的命令行參數及其默認值。當然,也可以在終端用命令行參數修改這些默認值。

其中參數描述為:

第一個參數第二個參數第三個參數參數名稱默認值參數描述

import tensorflow as tfnnflags = tf.app.flagsn############################n# hyper parameters #n############################nn# For separate margin lossnflags.DEFINE_float(m_plus, 0.9, the parameter of m plus)nflags.DEFINE_float(m_minus, 0.1, the parameter of m minus)nflags.DEFINE_float(lambda_val, 0.5, down weight of the loss for absent digit classes)nFLAGS = tf.app.flags.FLAGSnndef main(_):n print(FLAGS.m_plus)n print(FLAGS.m_minus)n print(lambda_val)nif __name__ == __main__:n tf.app.run() #執行main函數 n

執行:

root:~/Tensorflowexample$ python flags_example.py n0.9n0.1n0.5nroot:~/Tensorflowexample$ python flags_example.pynroot:~/Tensorflowexample$ python flags_example.py --m_plus 1.0 --m_minus 0.2 --lambad_val 0.9n1.0n0.2n0.5n

利用python的argparse包

argparse是python的命令行解析工具,或者說可以在python代碼中調用shell的一些命令,從而簡化和系統命令之間的交互。tensorflow的一些例子中用argparse來定義一些默認命令,通常是全局變數,也是用作和系統命令之間交互的全局設置。詳細介紹參考The Python Standard Library中argparse介紹具體編程時,argparse包的使用方法如下:

1,導入argparse模塊

import argparsen

2. 創建解析器對象ArgumentParser,可以添加參數

parser=argparse.ArgumentParser(description="This is a example program ")n

3. add_argument()方法,用來指定程序需要接受的命令參數

parser.add_argument("--echo",type=str,default=hi,dest=m,help="echo the string you use here")nparser.add_argument("--square",type=int,default= 9 ,dest=n,help="display a square of a given number")nargs = parser.parse_args()n

定位參數:

parser.add_argument("echo",help="echo the string")n

可選參數: 在執行程序的時候,定位參數必選,可選參數可選。

add_argument()常用的參數:

dest:如果提供dest,例如dest="a",那麼可以通過args.a訪問該參數

print(args.m)nprint(args.n)n

default:設置參數的默認值 action:參數觸發的動作 store:保存參數,默認 store_const:保存一個被定義為參數規格一部分的值(常量),而不是一個來自參數解析而來的值。 store_ture/store_false:保存相應的布爾值 append:將值保存在一個列表中。 append_const:將一個定義在參數規格中的值(常量)保存在一個列表中

count:參數出現的次數

parser.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")

version:列印程序版本信息 type:把從命令行輸入的結果轉成設置的類型 choice:允許的參數值n

parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")

help:參數命令的介紹n

常式完整代碼如下

import argparsennparser = argparse.ArgumentParser()nparser.add_argument("--echo",type=str,default=hi,dest=m,help="echo the string you use here")nparser.add_argument("--square",type=int,default= 9 ,dest=n,help="display a square of a given number")nargs = parser.parse_args()nnprint(args.m)nprint(args.n)n

執行:

root:~/Tensorflowexample$ python argparse_example.pynhin9nroot:~/Tensorflowexample$ python argparse_example.py --echo hello --square 4nhellon4n

參考:jianshu.com/p/b8b09084b

推薦閱讀:

如何使用TensorFlow中的高級API:Estimator、Experiment和Dataset
TensorFlow 教程 #01 - 簡單線性模型

TAG:TensorFlow | 深度学习DeepLearning |