程序的入口:
- 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
来源: https://www.cnblogs.com/duwenlu/p/9038999.html