Tensorflow笔记系列:
1.flag是什么?
flag函数:用于帮助我们添加命令行的可选参数。
也就是说利用该函数我们可以实现在命令行中选择需要设定的参数来运行程序,
可以不用反复修改源代码中的参数,直接在命令行中进行参数的设定。
tf定义了tf.app.flags,用于支持接受命令行传递参数,相当于接受argv。
2.使用举例:
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
通过输入不同的文件名、参数,可以快速完成程序的调参和更换训练集的操作,不需要进入源码中更改。
3.app.run()
在用flag定义了脚本以后,能用
if __name__ == '__main__':
tf.app.run()
进行运行,类似于c/c++中的main()
有两种情况:
- 如果你的代码中的入口函数不叫main(),而是一个其他名字的函数,如test(),则你应该这样写入口tf.app.run(test)
- 如果你的代码中的入口函数叫main(),则你就可以把入口写成tf.app.run()
参考博客:
https://blog.csdn.net/spring_willow/article/details/80111993