且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

命令行参数设置|学习笔记

更新时间:2022-09-02 16:09:48

开发者学堂课程【深度学习框架 TensorFlow 入门命令行参数设置学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/773/detail/13551


命令行参数设置


内容介绍:

一、什么是命令行参数

二、命令行参数使用


一、什么是命令行参数

(1)当前路径下,在终端执行 Python 文件:  

Python day01_deeplearning.py 按下回车运行

如果在后面加上 --logdir ,这就是命令行参数。

(2)tensorboard --logdir=”” 指定事件文件的路径,这些路径是赋给命令行参数的值,可以传到代码当中去执行要显示的事件文件,这就是命令行参数。


二、命令行参数使用

(1)定义 tf.app.flags

它支持应用从命令行接受参数,可以用来指定集群配置等。在 tf.app.flags 下面有各种定义参数的类型

#定义整型

tf.app.flags.DEFINE_integer("max_step",0,"训练模型的步数")

第一个 “max_step”是参数的名字。

第二个是给的一个默认值。 tensorboard 后如果什么都不传,程序将返回默认值0传给 max_step 。

第三个参数是对变量的说明,例如 max_step 是训练模型的步数。

#定义字符串

tf.app.flags.DEFINE_string("max_step","","模型保存的路径+模型名字")

第一个参数是变量的名字。

第二个参数是给一个默认值。

第三个参数是对变量的说明。

(2)FLAGS 标志

为了方便后续的调用,在 tf.app.flags 中 flags 有一个 FLAGS 标志,它在程序中可以调用到我们前面具体定义的 flag.name

#定义获取命令行参数

FLAGS = tf.app.flags.FLAGS   简化FLAGS

#训练的步数(依据模型大小而定)

for i in range(FLAGS.max_step):

sess.run(train_op)

通过FLAGS.max_step调用命令行中传过来的参数。

命令行参数演示

#1)定义命令行参数

tf.app.flags.DEFINE_integer("max_step",100,"训练模型的步数")

tf.app.flags.DEFINE_string("max_step","UnKnow","模型保存的路径+模型名字")

#2)简化变量名

FLAGS = tf.app.flags.FLAGS

def command_demo():

"""

命令行参数演示

"""

print("max_step:\n",FLAGS.max_step)

print("model_dir:\n",FLAGS.model_dir)

return None

if __name__ == "__name__":

#代码7:命令行参数演示

command_demo()

运行后代码结果:

在命令行当中运行

Python day01_deeplearning.py

运行结果:

max_step:

100

model_dir:

UnKnow

Python day01_deeplearning.py --max_step=200 --model_dir="Hello World"

运行结果:

max_step:

200

model_dir:

Hello World

(3)通过 tf.app.run() 启动 main(argv) 函数

tf.app.flags.DEFINE_integer("max_step",100,"训练模型的步数")

tf.app.flags.DEFINE_string("max_step","UnKnow","模型保存的路径+模型名字")

#2)简化变量名

FLAGS = tf.app.flags.FLAGS

def command_demo():

"""

命令行参数演示

"""

print("max_step:\n",FLAGS.max_step)

print("model_dir:\n",FLAGS.model_dir)

return None

def main(argv):

print(argv)

return None

if __name__ == "__name__":

tf.app.run

如果 main(argv) 中不写argv或者换成其他,将会报错,就算没用到它也必须写上argv。