diff options
author | Vijay Vasudevan <vrv@google.com> | 2016-01-06 12:54:03 -0800 |
---|---|---|
committer | Vijay Vasudevan <vrv@google.com> | 2016-01-06 12:54:03 -0800 |
commit | b947bcc154db62e2306e8bf3edb1a94868edbbca (patch) | |
tree | b3019f9edc459e53185cabe64ef27890fc1aebb8 /tensorflow/cc/tutorials | |
parent | e26f0f34018b7adb519e989b59a0462b08a93ea8 (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.cc | 78 |
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); } |