1. 程式人生 > >TensorFlow-谷歌深度學習庫 命令行參數

TensorFlow-谷歌深度學習庫 命令行參數

ron bat true cnblogs 命令 一起 記錄 html tro

程序的入口:

tf.app.run

tf.app.run(
    main=None,
    argv=None
)

運行程序,可以提供‘main’函數以及函數參數列表。處理flag解析然後執行main函數。

什麽是flag解析呢?

由於深度學習神經網絡往往需要對各種Hyperparameter調優,比如學習率,卷積核參數設置等等, 這時使用命令行調參是非常方便的。

需要用到TensorFlow框架中的tf.app.flags組件

tf.app.flags組件中提供很多自帶的設置不同類型命令行參數以及其默認值。比如下面這些:

tf.app.flags.DEFINE_integer
tf.app.flags.DEFINE_string
tf.app.flags.DEFINE_float
tf.app.flags.DEFINE_bool

舉個最簡單的例子的話是這樣:

FLAGS = tf.app.flags.FLAGS  # 聲明FLAGS對象

# Configuration (alphabetically)
tf.app.flags.DEFINE_integer(batch_size, 16,
                            "Number of samples per batch.")

if __name__ == __main__
: tf.app.run()

tf.ConfigProto

tf.ConfigProto()函數用在創建session的時候,用來對session進行參數配置。

它可以用來

1. 記錄設備指派情況 tf.ConfigProto(log_device_placement=True)

是否打印設備分配日誌,設置tf.ConfigProto()中參數log_device_placement = True , 會在終端打印出各項操作是在哪個設備上運行的。

tf.set_random_seed(seed)

設置圖級隨機seed。

依賴於隨機seed的操作實際上從兩個seed中獲取:圖級和操作級seed。 這將設置圖級別的seed。

其與操作級seed的相互作用如下:

1.如果沒有設置圖形級別和操作seed,則使用隨機seed進行操作。
2.如果設置了圖級seed,但操作seed沒有設置:系統確定性地選擇與圖級seed一起的操作seed,以便獲得唯一的隨機序列。
3.如果沒有設置圖級seed,但是設置了操作seed:使用默認的圖級seed和指定的操作seed來確定隨機序列。
4.如果圖級和操作seed都被設置:兩個seed聯合使用以確定隨機序列。

http://www.cnblogs.com/antflow/p/7234144.html

TensorFlow-谷歌深度學習庫 命令行參數