我无法理解为什么在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是错误信息标签,但什么时候需要?(也许我的阅读信息有误) 为什么这部分是必要的? 这部分有什么功能?
答案 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}}变量,这里没有显示。