diff options
author | 2016-02-16 11:30:12 -0800 | |
---|---|---|
committer | 2016-02-16 11:42:48 -0800 | |
commit | 0907b351103a2fed8c9b74a5ddaaf47870d9945e (patch) | |
tree | 6c52705016e5f1ecaffb6ffdd532e775659b9f10 /tensorflow/examples/label_image | |
parent | f66d5034121940533f7f29c155505017da9cb7f4 (diff) |
Update versions of bower components to reflect those inside Google. This also fixes the problem where users are asked which version of polymer to install when they run `bower install`.
Change: 114774859
Diffstat (limited to 'tensorflow/examples/label_image')
-rw-r--r-- | tensorflow/examples/label_image/BUILD | 26 | ||||
-rw-r--r-- | tensorflow/examples/label_image/command_line_flags.cc | 135 | ||||
-rw-r--r-- | tensorflow/examples/label_image/command_line_flags.h | 59 | ||||
-rw-r--r-- | tensorflow/examples/label_image/command_line_flags_test.cc | 79 | ||||
-rw-r--r-- | tensorflow/examples/label_image/main.cc | 27 |
5 files changed, 15 insertions, 311 deletions
diff --git a/tensorflow/examples/label_image/BUILD b/tensorflow/examples/label_image/BUILD index 33577ea787..facc61ae13 100644 --- a/tensorflow/examples/label_image/BUILD +++ b/tensorflow/examples/label_image/BUILD @@ -7,17 +7,6 @@ licenses(["notice"]) # Apache 2.0 exports_files(["LICENSE"]) -cc_library( - name = "command_line_flags", - srcs = [ - "command_line_flags.cc", - "command_line_flags.h", - ], - deps = [ - "//tensorflow/core:tensorflow", - ], -) - cc_binary( name = "label_image", srcs = [ @@ -25,25 +14,12 @@ cc_binary( ], linkopts = ["-lm"], deps = [ - ":command_line_flags", "//tensorflow/cc:cc_ops", + "//tensorflow/core:framework_internal", "//tensorflow/core:tensorflow", ], ) -cc_test( - name = "command_line_flags_test", - srcs = [ - "command_line_flags_test.cc", - ], - deps = [ - ":command_line_flags", - "//tensorflow/core:tensorflow", - "//tensorflow/core:test_main", - "//tensorflow/core/platform/default/build_config:gtest", - ], -) - filegroup( name = "all_files", srcs = glob( diff --git a/tensorflow/examples/label_image/command_line_flags.cc b/tensorflow/examples/label_image/command_line_flags.cc deleted file mode 100644 index 9806ccb624..0000000000 --- a/tensorflow/examples/label_image/command_line_flags.cc +++ /dev/null @@ -1,135 +0,0 @@ -/* Copyright 2015 Google Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -==============================================================================*/ - -#include "tensorflow/examples/label_image/command_line_flags.h" -#include "tensorflow/core/lib/core/stringpiece.h" -#include "tensorflow/core/platform/logging.h" - -using tensorflow::string; - -namespace { - -bool ParseStringFlag(tensorflow::StringPiece arg, tensorflow::StringPiece flag, - string* dst, bool* value_parsing_ok) { - *value_parsing_ok = true; - if (arg.Consume("--") && arg.Consume(flag) && arg.Consume("=")) { - *dst = arg.ToString(); - return true; - } - - return false; -} - -bool ParseInt32Flag(tensorflow::StringPiece arg, tensorflow::StringPiece flag, - tensorflow::int32* dst, bool* value_parsing_ok) { - *value_parsing_ok = true; - if (arg.Consume("--") && arg.Consume(flag) && arg.Consume("=")) { - char extra; - if (sscanf(arg.data(), "%d%c", dst, &extra) != 1) { - LOG(ERROR) << "Couldn't interpret value " << arg << " for flag " << flag - << "."; - *value_parsing_ok = false; - } - return true; - } - - return false; -} - -bool ParseBoolFlag(tensorflow::StringPiece arg, tensorflow::StringPiece flag, - bool* dst, bool* value_parsing_ok) { - *value_parsing_ok = true; - if (arg.Consume("--") && 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; - } else { - LOG(ERROR) << "Couldn't interpret value " << arg << " for flag " << flag - << "."; - *value_parsing_ok = false; - return true; - } - } - - return false; -} - -} // namespace - -Flag::Flag(const char* name, tensorflow::int32* dst) - : name_(name), type_(TYPE_INT), int_value_(dst) {} - -Flag::Flag(const char* name, bool* dst) - : name_(name), type_(TYPE_BOOL), bool_value_(dst) {} - -Flag::Flag(const char* name, string* dst) - : name_(name), type_(TYPE_STRING), string_value_(dst) {} - -bool Flag::Parse(string arg, bool* value_parsing_ok) const { - bool result = false; - if (type_ == TYPE_INT) { - result = ParseInt32Flag(arg, name_, int_value_, value_parsing_ok); - } else if (type_ == TYPE_BOOL) { - result = ParseBoolFlag(arg, name_, bool_value_, value_parsing_ok); - } else if (type_ == TYPE_STRING) { - result = ParseStringFlag(arg, name_, string_value_, value_parsing_ok); - } - return result; -} - -bool ParseFlags(int* argc, char** argv, const std::vector<Flag>& flag_list) { - bool result = true; - 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; - } - - bool was_found = false; - for (const Flag& flag : flag_list) { - bool value_parsing_ok; - was_found = flag.Parse(argv[i], &value_parsing_ok); - if (!value_parsing_ok) { - result = false; - } - if (was_found) { - break; - } - } - if (!was_found) { - unknown_flags.push_back(argv[i]); - } - } - // Passthrough any extra flags. - int dst = 1; // Skip argv[0] - for (char* f : unknown_flags) { - argv[dst++] = f; - } - argv[dst++] = nullptr; - *argc = unknown_flags.size() + 1; - return result; -} diff --git a/tensorflow/examples/label_image/command_line_flags.h b/tensorflow/examples/label_image/command_line_flags.h deleted file mode 100644 index dcc8f3fdde..0000000000 --- a/tensorflow/examples/label_image/command_line_flags.h +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright 2015 Google Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -==============================================================================*/ - -#ifndef TENSORFLOW_EXAMPLES_LABEL_IMAGE_COMMAND_LINE_FLAGS_H -#define TENSORFLOW_EXAMPLES_LABEL_IMAGE_COMMAND_LINE_FLAGS_H - -#include <vector> -#include "tensorflow/core/platform/types.h" - -// This is a simple command-line argument parsing module to help us handle -// example parameters. The recommended way of using it is with local variables -// and an initializer list of Flag objects, for example: -// -// int some_int = 10; -// bool some_switch = false; -// string some_name = "something"; -// bool parsed_values_ok = ParseFlags(&argc, argv, { -// Flag("some_int", &some_int), -// Flag("some_switch", &some_switch), -// Flag("some_name", &some_name)}); -// -// The argc and argv values are adjusted by the Parse function so all that -// remains is the program name (at argv[0]) and any unknown arguments fill the -// rest of the array. This means you can check for flags that weren't understood -// by seeing if argv is greater than 1. -// The result indicates if there were any errors parsing the values that were -// passed to the command-line switches. For example, --some_int=foo would return -// false because the argument is expected to be an integer. -class Flag { - public: - Flag(const char* name, tensorflow::int32* dst1); - Flag(const char* name, bool* dst); - Flag(const char* name, tensorflow::string* dst); - - bool Parse(tensorflow::string arg, bool* value_parsing_ok) const; - - private: - tensorflow::string name_; - enum { TYPE_INT, TYPE_BOOL, TYPE_STRING } type_; - int* int_value_; - bool* bool_value_; - tensorflow::string* string_value_; -}; - -bool ParseFlags(int* argc, char** argv, const std::vector<Flag>& flag_list); - -#endif // TENSORFLOW_EXAMPLES_LABEL_IMAGE_COMMAND_LINE_FLAGS_H diff --git a/tensorflow/examples/label_image/command_line_flags_test.cc b/tensorflow/examples/label_image/command_line_flags_test.cc deleted file mode 100644 index 870e95288a..0000000000 --- a/tensorflow/examples/label_image/command_line_flags_test.cc +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright 2015 Google Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -==============================================================================*/ - -#include "tensorflow/examples/label_image/command_line_flags.h" -#include "tensorflow/core/platform/test.h" - -namespace { -// The returned array is only valid for the lifetime of the input vector. -// We're using const casting because we need to pass in an argv-style array of -// char* pointers for the API, even though we know they won't be altered. -std::vector<char*> CharPointerVectorFromStrings( - const std::vector<tensorflow::string>& strings) { - std::vector<char*> result; - for (const tensorflow::string& string : strings) { - result.push_back(const_cast<char*>(string.c_str())); - } - return result; -} -} - -TEST(CommandLineFlagsTest, BasicUsage) { - int some_int = 10; - bool some_switch = false; - tensorflow::string some_name = "something"; - int argc = 4; - std::vector<tensorflow::string> argv_strings = { - "program_name", "--some_int=20", "--some_switch", - "--some_name=somethingelse"}; - std::vector<char*> argv_array = CharPointerVectorFromStrings(argv_strings); - bool parsed_ok = - ParseFlags(&argc, argv_array.data(), {Flag("some_int", &some_int), - Flag("some_switch", &some_switch), - Flag("some_name", &some_name)}); - EXPECT_EQ(true, parsed_ok); - EXPECT_EQ(20, some_int); - EXPECT_EQ(true, some_switch); - EXPECT_EQ("somethingelse", some_name); - EXPECT_EQ(argc, 1); -} - -TEST(CommandLineFlagsTest, BadIntValue) { - int some_int = 10; - int argc = 2; - std::vector<tensorflow::string> argv_strings = {"program_name", - "--some_int=notanumber"}; - std::vector<char*> argv_array = CharPointerVectorFromStrings(argv_strings); - bool parsed_ok = - ParseFlags(&argc, argv_array.data(), {Flag("some_int", &some_int)}); - - EXPECT_EQ(false, parsed_ok); - EXPECT_EQ(10, some_int); - EXPECT_EQ(argc, 1); -} - -TEST(CommandLineFlagsTest, BadBoolValue) { - bool some_switch = false; - int argc = 2; - std::vector<tensorflow::string> argv_strings = {"program_name", - "--some_switch=notabool"}; - std::vector<char*> argv_array = CharPointerVectorFromStrings(argv_strings); - bool parsed_ok = - ParseFlags(&argc, argv_array.data(), {Flag("some_switch", &some_switch)}); - - EXPECT_EQ(false, parsed_ok); - EXPECT_EQ(false, some_switch); - EXPECT_EQ(argc, 1); -} diff --git a/tensorflow/examples/label_image/main.cc b/tensorflow/examples/label_image/main.cc index 78fd1dd860..25461d9f00 100644 --- a/tensorflow/examples/label_image/main.cc +++ b/tensorflow/examples/label_image/main.cc @@ -49,9 +49,10 @@ limitations under the License. #include "tensorflow/core/platform/logging.h" #include "tensorflow/core/platform/types.h" #include "tensorflow/core/public/session.h" -#include "tensorflow/examples/label_image/command_line_flags.h" +#include "tensorflow/core/util/command_line_flags.h" // These are all common classes it's handy to reference with no namespace. +using tensorflow::Flag; using tensorflow::Tensor; using tensorflow::Status; using tensorflow::string; @@ -248,18 +249,18 @@ int main(int argc, char* argv[]) { string output_layer = "softmax"; bool self_test = false; string root_dir = ""; - const bool parse_result = - ParseFlags(&argc, argv, {Flag("image", &image), // - Flag("graph", &graph), // - Flag("labels", &labels), // - Flag("input_width", &input_width), // - Flag("input_height", &input_height), // - Flag("input_mean", &input_mean), // - Flag("input_std", &input_std), // - Flag("input_layer", &input_layer), // - Flag("output_layer", &output_layer), // - Flag("self_test", &self_test), // - Flag("root_dir", &root_dir)}); + const bool parse_result = tensorflow::ParseFlags( + &argc, argv, {Flag("image", &image), // + Flag("graph", &graph), // + Flag("labels", &labels), // + Flag("input_width", &input_width), // + Flag("input_height", &input_height), // + Flag("input_mean", &input_mean), // + Flag("input_std", &input_std), // + Flag("input_layer", &input_layer), // + Flag("output_layer", &output_layer), // + Flag("self_test", &self_test), // + Flag("root_dir", &root_dir)}); if (!parse_result) { LOG(ERROR) << "Error parsing command-line flags."; return -1; |