TF之TF flags:TF flags(命令行解析)的简介、安装、使用方法之详细攻略

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: TF之TF flags:TF flags(命令行解析)的简介、安装、使用方法之详细攻略

TF flags的简介


1、flags可以帮助我们通过命令行来动态的更改代码中的参数。Tensorflow 使用flags定义命令行参数的方法。ML的模型中有大量需要tuning的超参数,所以此方法,迎合了需要一种灵活的方式对代码某些参数进行调整的需求

(1)、比如,在这个py文件中,首先定义了一些参数,然后将参数统一保存到变量FLAGS中,相当于赋值,后边调用这些参数的时候直接使用FLAGS参数即可

(2)、基本参数类型有三种flags.DEFINE_integer、flags.DEFINE_float、flags.DEFINE_boolean。

(3)、第一个是参数名称,第二个参数是默认值,第三个是参数描述


2、使用过程

#第一步,调用flags = tf.app.flags,进行定义参数名称,并可给定初值、参数说明

#第二步,flags参数直接赋值

#第三步,运行tf.app.run()


import tensorflow as tf

#第一个是参数名称,第二个参数是默认值,第三个是参数描述

#第一步,调用flags = tf.app.flags,进行定义参数名称,并可给定初值、参数说明

flags = tf.app.flags

flags.DEFINE_integer("epoch", 25, "Epoch to train [25]")

flags.DEFINE_float("learning_rate", 0.0002, "Learning rate of for adam [0.0002]")

flags.DEFINE_float("beta1", 0.5, "Momentum term of adam [0.5]")

flags.DEFINE_boolean("train", False, "True for training, False for testing [False]")

flags.DEFINE_boolean("crop", False, "True for training, False for testing [False]")

flags.DEFINE_boolean("visualize", False, "True for visualizing, False for nothing [False]")

FLAGS = flags.FLAGS

def main(_):

 #第二步,flags参数直接赋值

 pp.pprint(flags.FLAGS.__flags)

 if FLAGS.input_width is None:

   FLAGS.input_width = FLAGS.input_height

 if FLAGS.output_width is None:

   FLAGS.output_width = FLAGS.output_height

 if not os.path.exists(FLAGS.checkpoint_dir):

   os.makedirs(FLAGS.checkpoint_dir)

 if not os.path.exists(FLAGS.sample_dir):

   os.makedirs(FLAGS.sample_dir)

……

         input_width=FLAGS.input_width,

         input_height=FLAGS.input_height,

         output_width=FLAGS.output_width,

         output_height=FLAGS.output_height,

         batch_size=FLAGS.batch_size,

         sample_num=FLAGS.batch_size,

         y_dim=10,

         dataset_name=FLAGS.dataset,

         input_fname_pattern=FLAGS.input_fname_pattern,

         crop=FLAGS.crop,

         checkpoint_dir=FLAGS.checkpoint_dir,

         sample_dir=FLAGS.sample_dir)

   if FLAGS.train:

     dcgan.train(FLAGS)

   else:

     if not dcgan.load(FLAGS.checkpoint_dir)[0]:

       raise Exception("[!] Train a model first, then run test mode")

   

if __name__ == '__main__':

 #第三步,运行tf.app.run()

 tf.app.run()



TF flags的安装


直接从TF中调用,导入即可使用


import tensorflow as tf

flags = tf.app.flags



TF flags的使用方法


1、第一步,py文件的内部函数的定义

T1、tf定义了tf.app.flags,用于支持接受命令行传递参数,相当于接受argv。


import tensorflow as tf

#1、第一个是参数名称,第二个参数是默认值,第三个是参数描述

tf.app.flags.DEFINE_string('str_name', 'def_v_1',"descrip1")

tf.app.flags.DEFINE_integer('int_name', 10,"descript2")

tf.app.flags.DEFINE_boolean('bool_name', False, "descript3")

FLAGS = tf.app.flags.FLAGS

#必须带参数,否则:'TypeError: main() takes no arguments (1 given)';  main的参数名随意定义,无要求

def main(_):

 print(FLAGS.str_name)

 print(FLAGS.int_name)

 print(FLAGS.bool_name)

if __name__ == '__main__':

 tf.app.run() #2、执行main函数

T2、一个简单的示例程序来展示如何使用 command line flags,除了使用 absl 外,还可以使用 argparser。比如定义下边文件名称为test_flags.py


from absl import flags

from absl import app

FLAGS = flags.FLAGS

#1、第一个是参数名称,第二个参数是默认值,第三个是参数描述

flags.DEFINE_string('model', None, 'model to run')

def main(argv):

   print('Hello World')

   print('selected model', FLAGS.model)

if __name__ == '__main__':

   app.run(main)  #2、执行main函数

2、第二步,在命令行中运行上边的示例程序


# 1、运行示例程序

python test_flags.py

# 2、更改相应参数

python test_flags.py --model "My model"

# 3、获得帮助信息

python test_flags.py -help

python test_flags.py -helpfull


 


相关文章
|
2月前
|
域名解析 网络协议 安全
在Linux中,想在命令行下访问某个网站,并且该网站域名还没有解析,如何做?
在Linux中,想在命令行下访问某个网站,并且该网站域名还没有解析,如何做?
|
14天前
|
域名解析 网络协议 安全
DNS查询工具简介
DNS查询工具简介
70 4
|
14天前
|
SQL 安全 Windows
SQL安装程序规则错误解析与解决方案
在安装SQL Server时,用户可能会遇到安装程序规则错误的问题,这些错误通常与系统配置、权限设置、依赖项缺失或版本不兼容等因素有关
|
27天前
|
Python
命令行解析工具 argparse
命令行解析工具 argparse
42 14
|
27天前
|
域名解析 网络协议 安全
DNS查询工具简介
DNS查询工具简介
49 4
|
1月前
|
XML 监控 Java
Spring Cloud全解析:熔断之Hystrix简介
Hystrix 是由 Netflix 开源的延迟和容错库,用于提高分布式系统的弹性。它通过断路器模式、资源隔离、服务降级及限流等机制防止服务雪崩。Hystrix 基于命令模式,通过 `HystrixCommand` 封装对外部依赖的调用逻辑。断路器能在依赖服务故障时快速返回备选响应,避免长时间等待。此外,Hystrix 还提供了监控功能,能够实时监控运行指标和配置变化。依赖管理方面,可通过 `@EnableHystrix` 启用 Hystrix 支持,并配置全局或局部的降级策略。结合 Feign 可实现客户端的服务降级。
131 23
|
5天前
|
缓存 资源调度 JavaScript
npx与npm的差异解析,以及包管理器yarn与Node版本管理工具nvm的使用方法详解
npx与npm的差异解析,以及包管理器yarn与Node版本管理工具nvm的使用方法详解
15 0
|
1月前
|
JSON API 数据格式
requests库中json参数与data参数使用方法的深入解析
选择 `data`或 `json`取决于你的具体需求,以及服务器端期望接收的数据格式。
136 2
|
2月前
|
缓存 运维 Linux
深入解析:一步步掌握 CentOS 7 安装全流程及运维实战技巧
深入解析:一步步掌握 CentOS 7 安装全流程及运维实战技巧
|
2月前
|
存储 Go UED
精通Go语言的命令行参数解析
【8月更文挑战第31天】
34 0

推荐镜像

更多