aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/cc/tutorials
diff options
context:
space:
mode:
authorGravatar Vijay Vasudevan <vrv@google.com>2016-01-06 12:54:03 -0800
committerGravatar Vijay Vasudevan <vrv@google.com>2016-01-06 12:54:03 -0800
commitb947bcc154db62e2306e8bf3edb1a94868edbbca (patch)
treeb3019f9edc459e53185cabe64ef27890fc1aebb8 /tensorflow/cc/tutorials
parente26f0f34018b7adb519e989b59a0462b08a93ea8 (diff)
TensorFlow: Remove use of command_line_flags library in our usage. Soon
to be deleted completely. Change: 111521876
Diffstat (limited to 'tensorflow/cc/tutorials')
-rw-r--r--tensorflow/cc/tutorials/example_trainer.cc78
1 files changed, 63 insertions, 15 deletions
diff --git a/tensorflow/cc/tutorials/example_trainer.cc b/tensorflow/cc/tutorials/example_trainer.cc
index 51c8726689..e318ca2bbc 100644
--- a/tensorflow/cc/tutorials/example_trainer.cc
+++ b/tensorflow/cc/tutorials/example_trainer.cc
@@ -22,7 +22,6 @@ limitations under the License.
#include "tensorflow/core/framework/graph.pb.h"
#include "tensorflow/core/graph/default_device.h"
#include "tensorflow/core/graph/graph_def_builder.h"
-#include "tensorflow/core/lib/core/command_line_flags.h"
#include "tensorflow/core/lib/core/threadpool.h"
#include "tensorflow/core/lib/strings/stringprintf.h"
#include "tensorflow/core/platform/init_main.h"
@@ -40,11 +39,6 @@ struct Options {
bool use_gpu = false; // Whether to use gpu in the training
};
-TF_DEFINE_int32(num_concurrent_sessions, 10, "Number of concurrent sessions");
-TF_DEFINE_int32(num_concurrent_steps, 10, "Number of concurrent steps");
-TF_DEFINE_int32(num_iterations, 100, "Number of iterations");
-TF_DEFINE_bool(use_gpu, false, "Whether to use gpu in the training");
-
// A = [3 2; -1 0]; x = rand(2, 1);
// We want to compute the largest eigenvalue for A.
// repeat x = y / y.norm(); y = A * x; end
@@ -144,18 +138,72 @@ void ConcurrentSessions(const Options& opts) {
} // end namespace example
} // end namespace tensorflow
+namespace {
+
+bool ParseInt32Flag(tensorflow::StringPiece arg, tensorflow::StringPiece flag,
+ int32* dst) {
+ if (arg.Consume(flag) && arg.Consume("=")) {
+ char extra;
+ return (sscanf(arg.data(), "%d%c", dst, &extra) == 1);
+ }
+
+ return false;
+}
+
+bool ParseBoolFlag(tensorflow::StringPiece arg, tensorflow::StringPiece flag,
+ bool* dst) {
+ if (arg.Consume(flag)) {
+ if (arg.empty()) {
+ *dst = true;
+ return true;
+ }
+
+ if (arg == "=true") {
+ *dst = true;
+ return true;
+ } else if (arg == "=false") {
+ *dst = false;
+ return true;
+ }
+ }
+
+ return false;
+}
+
+} // namespace
+
int main(int argc, char* argv[]) {
tensorflow::example::Options opts;
- tensorflow::Status s = tensorflow::ParseCommandLineFlags(&argc, argv);
- if (!s.ok()) {
- LOG(FATAL) << "Error parsing command line flags: " << s.ToString();
+ std::vector<char*> unknown_flags;
+ for (int i = 1; i < argc; ++i) {
+ if (string(argv[i]) == "--") {
+ while (i < argc) {
+ unknown_flags.push_back(argv[i]);
+ ++i;
+ }
+ break;
+ }
+
+ if (ParseInt32Flag(argv[i], "--num_concurrent_sessions",
+ &opts.num_concurrent_sessions) ||
+ ParseInt32Flag(argv[i], "--num_concurrent_steps",
+ &opts.num_concurrent_steps) ||
+ ParseInt32Flag(argv[i], "--num_iterations", &opts.num_iterations) ||
+ ParseBoolFlag(argv[i], "--use_gpu", &opts.use_gpu)) {
+ continue;
+ }
+
+ fprintf(stderr, "Unknown flag: %s\n", argv[i]);
+ return -1;
}
- tensorflow::port::InitMain(argv[0], &argc, &argv);
- opts.num_concurrent_sessions =
- tensorflow::example::FLAGS_num_concurrent_sessions;
- opts.num_concurrent_steps = tensorflow::example::FLAGS_num_concurrent_steps;
- opts.num_iterations = tensorflow::example::FLAGS_num_iterations;
- opts.use_gpu = tensorflow::example::FLAGS_use_gpu;
+ // Passthrough any unknown flags.
+ int dst = 1; // Skip argv[0]
+ for (char* f : unknown_flags) {
+ argv[dst++] = f;
+ }
+ argv[dst++] = nullptr;
+ argc = unknown_flags.size() + 1;
+ tensorflow::port::InitMain(argv[0], &argc, &argv);
tensorflow::example::ConcurrentSessions(opts);
}