为什么需要FLAGS?

时间:2017-04-16 13:08:54

标签: python python-3.x tensorflow

我无法理解为什么在TensorFlow中需要FLAGS。 现在我在书中学习TensorFlow。

# coding: utf-8

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import os

import numpy as np
import tensorflow as tf
from PIL import Image

from reader import Cifar10Reader

FLAGS = tf.app.flags.FLAGS
tf.app.flags.DEFINE_string('file',None,"path")
tf.app.flags.DEFINE_integer('offset',0,"record")
tf.app.flags.DEFINE_integer('length',16,"change record")

basename = os.path.basename(FLAGS.file)
path = os.path.dirname(FLAGS.file)

reader = Cifar10Reader(FLAGS.file)

stop = FLAGS.offset + FLAGS.length

for index in range(FLAGS.offset,stop):
    image = reader.read(index)

    print('label: %d' % image.label)
    imageshow = Image.fromarray(image.byte_array.astype(np.unit8))

    file_name = '%s-%02d-%d.png' % (basename,index,image.label)
    file = os.path.join(path,file_name)
    with open(file,mode='wb') as out:
        imageshow.save(out,format='png')

reader.close()

我写的像这些代码,我无法理解

FLAGS = tf.app.flags.FLAGS

这一部分。 我看过FLAGS是错误信息标签,但什么时候需要?(也许我的阅读信息有误) 为什么这部分是必要的? 这部分有什么功能?

1 个答案:

答案 0 :(得分:1)

通常import tensorflow as tf fs = tf.app.flags fs.DEFINE_integer('n_epochs', 25, 'number of epochs to train [25]') FLAGS = fs.FLAGS def main(argv): print(FLAGS.n_epochs) if __name__ == '__main__': tf.app.run() 用于将命令行参数传递到程序中。 E.g。

python snippet.py

如果您从命令行以25 运行此代码段,则会打印

python snippet.py --n_epochs 50

如果您运行50 ,则会打印

argparse

你可以用python的包FLAGS来实现同样的目的。

在您发布的示例中,使用FLAGS无疑是有点奇怪。这里可以直接定义变量来替换它,除非在代码中的其他地方使用{{1}}变量,这里没有显示。