內容包含如下幾個我們經常看到的幾個函數:
①tf.flags.DEFINE_xxx()
②FLAGS = tf.flags.FLAGS
③FLAGS._parse_flags()
簡單的說:
用於幫助我們添加命令行的可選參數。
也就是說利用該函數我們可以實現在命令行中選擇需要設定的參數來運行程序,
可以不用反覆修改源代碼中的參數,直接在命令行中進行參數的設定
舉個栗子:
程序train.py文件中的小部分代碼如下所示:
FLAGS = tf.flags.FLAGS tf.flags.DEFINE_string('name', 'default', 'name of the model')
tf.flags.DEFINE_integer('num_seqs', 100, 'number of seqs in one batch')
tf.flags.DEFINE_integer('num_steps', 100, 'length of one seq')
tf.flags.DEFINE_integer('lstm_size', 128, 'size of hidden state of lstm')
tf.flags.DEFINE_integer('num_layers', 2, 'number of lstm layers')
tf.flags.DEFINE_boolean('use_embedding', False, 'whether to use embedding')
tf.flags.DEFINE_integer('embedding_size', 128, 'size of embedding')
tf.flags.DEFINE_float('learning_rate', 0.001, 'learning_rate')
tf.flags.DEFINE_float('train_keep_prob', 0.5, 'dropout rate during training')
tf.flags.DEFINE_string('input_file', '', 'utf8 encoded text file')
tf.flags.DEFINE_integer('max_steps', 100000, 'max steps to train')
tf.flags.DEFINE_integer('save_every_n', 1000, 'save the model every n steps')
tf.flags.DEFINE_integer('log_every_n', 10, 'log to the screen every n steps')
tf.flags.DEFINE_integer('max_vocab', 3500, 'max char number') #全局參數設置,顯示在命令行
在命令行中我們爲了執行train.py文件,在命令行中輸入:
python train.py \ --input_file data/shakespeare.txt \
--name shakespeare \
--num_steps 50 \
--num_seqs 32 \
--learning_rate 0.01 \
--max_steps 20000
通過輸入不同的文件名、參數,可以快速完成程序的調參和更換訓練集的操作,不需要進入源碼中更改。
import tensorflow as tf #取上述代碼中一部分進行實驗
tf.flags.DEFINE_integer('num_seqs', 100, 'number of seqs in one batch')
tf.flags.DEFINE_integer('num_steps', 100, 'length of one seq')
tf.flags.DEFINE_integer('lstm_size', 128, 'size of hidden state of lstm') #通過print()確定下面內容的功能 FLAGS = tf.flags.FLAGS #FLAGS保存命令行參數的數據 FLAGS._parse_flags() #將其解析成字典存儲到FLAGS.__flags中 print(FLAGS.__flags)
print(FLAGS.num_seqs)
print("\nParameters:")
for attr, value in sorted(FLAGS.__flags.items()):
print("{}={}".format(attr.upper(), value))
print("")
作者:spring_willow
來源:CSDN
原文:https://blog.csdn.net/spring_willow/article/details/80111993
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!