TensorFlow 的 Argparse 错误 cifar10.py
Argparse error with TensorFlow's cifar10.py
当我 运行 python cifar10.py
:
时出现以下错误
argparse.ArgumentError: argument --batch_size: conflicting option string(s): --batch_size
这是 运行 的完整输出,包括完整的跟踪:
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcublas.so.7.0 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcudnn.so.6.5 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcufft.so.7.0 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcuda.so locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcurand.so.7.0 locally
Traceback (most recent call last):
File "cifar10.py", line 54, in <module>
"""Number of images to process in a batch.""")
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/default/_flags.py", line 86, in DEFINE_integer
_define_helper(flag_name, default_value, docstring, int)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/default/_flags.py", line 60, in _define_helper
type=flagtype)
File "/usr/lib/python2.7/argparse.py", line 1297, in add_argument
return self._add_action(action)
File "/usr/lib/python2.7/argparse.py", line 1671, in _add_action
self._optionals._add_action(action)
File "/usr/lib/python2.7/argparse.py", line 1498, in _add_action
action = super(_ArgumentGroup, self)._add_action(action)
File "/usr/lib/python2.7/argparse.py", line 1311, in _add_action
self._check_conflict(action)
File "/usr/lib/python2.7/argparse.py", line 1449, in _check_conflict
conflict_handler(action, confl_optionals)
File "/usr/lib/python2.7/argparse.py", line 1456, in _handle_conflict_error
raise ArgumentError(action, message % conflict_string)
argparse.ArgumentError: argument --batch_size: conflicting option string(s): --batch_size
此错误似乎来自 cifar10.py
中的以下行:tf.app.flags.DEFINE_integer('batch_size', 128, """Number of images to process in a batch.""")
似乎 argparse
库认为我已经定义了选项字符串 --batch_size
,但我没有。
[堆栈:Amazon g2.2xlarge spot 实例,Python 2.7.6]
在 cifr10.py
文件中:
import tensorflow as tf
from tensorflow.models.image.cifar10 import cifar10_input
FLAGS = tf.app.flags.FLAGS
# Basic model parameters.
tf.app.flags.DEFINE_integer('batch_size', 128,
"""Number of images to process in a batch.""")
....
错误是由最后一条语句产生的,该语句在 _flags.py
文件中定义了一个具有该名称的 argparse
参数。显然此时 tf.app
已经有这样的参数定义。
所以我们需要进一步回顾 import tensorflow as tf
以了解 tf.app
是如何创建的?
Amazon g2.2xlarge
是什么?这也可以定义 batch_size
吗?
看起来 tf.app
来自
tensorflow/python/platform/app.py
它又从类似
的东西中得到它
from tensorflow.python.platform.google._app import *
因此,如果您在某些 google
或 amazon
本身接受 batch_size
参数的平台上 运行,则可能会产生此错误。
另一个关于 cifr10
和 batch_size
参数的问题:
同样的错误:
答案是使用 cifar10_train.py
、cifar10_eval.py
,而不是 cifar10.py
.
当我 运行 python cifar10.py
:
argparse.ArgumentError: argument --batch_size: conflicting option string(s): --batch_size
这是 运行 的完整输出,包括完整的跟踪:
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcublas.so.7.0 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcudnn.so.6.5 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcufft.so.7.0 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcuda.so locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcurand.so.7.0 locally
Traceback (most recent call last):
File "cifar10.py", line 54, in <module>
"""Number of images to process in a batch.""")
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/default/_flags.py", line 86, in DEFINE_integer
_define_helper(flag_name, default_value, docstring, int)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/default/_flags.py", line 60, in _define_helper
type=flagtype)
File "/usr/lib/python2.7/argparse.py", line 1297, in add_argument
return self._add_action(action)
File "/usr/lib/python2.7/argparse.py", line 1671, in _add_action
self._optionals._add_action(action)
File "/usr/lib/python2.7/argparse.py", line 1498, in _add_action
action = super(_ArgumentGroup, self)._add_action(action)
File "/usr/lib/python2.7/argparse.py", line 1311, in _add_action
self._check_conflict(action)
File "/usr/lib/python2.7/argparse.py", line 1449, in _check_conflict
conflict_handler(action, confl_optionals)
File "/usr/lib/python2.7/argparse.py", line 1456, in _handle_conflict_error
raise ArgumentError(action, message % conflict_string)
argparse.ArgumentError: argument --batch_size: conflicting option string(s): --batch_size
此错误似乎来自 cifar10.py
中的以下行:tf.app.flags.DEFINE_integer('batch_size', 128, """Number of images to process in a batch.""")
似乎 argparse
库认为我已经定义了选项字符串 --batch_size
,但我没有。
[堆栈:Amazon g2.2xlarge spot 实例,Python 2.7.6]
在 cifr10.py
文件中:
import tensorflow as tf
from tensorflow.models.image.cifar10 import cifar10_input
FLAGS = tf.app.flags.FLAGS
# Basic model parameters.
tf.app.flags.DEFINE_integer('batch_size', 128,
"""Number of images to process in a batch.""")
....
错误是由最后一条语句产生的,该语句在 _flags.py
文件中定义了一个具有该名称的 argparse
参数。显然此时 tf.app
已经有这样的参数定义。
所以我们需要进一步回顾 import tensorflow as tf
以了解 tf.app
是如何创建的?
Amazon g2.2xlarge
是什么?这也可以定义 batch_size
吗?
看起来 tf.app
来自
tensorflow/python/platform/app.py
它又从类似
的东西中得到它from tensorflow.python.platform.google._app import *
因此,如果您在某些 google
或 amazon
本身接受 batch_size
参数的平台上 运行,则可能会产生此错误。
另一个关于 cifr10
和 batch_size
参数的问题:
同样的错误:
cifar10_train.py
、cifar10_eval.py
,而不是 cifar10.py
.