summaryrefslogtreecommitdiff
path: root/tools/upgrade_solver_proto_text.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/upgrade_solver_proto_text.cpp')
-rw-r--r--tools/upgrade_solver_proto_text.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/tools/upgrade_solver_proto_text.cpp b/tools/upgrade_solver_proto_text.cpp
new file mode 100644
index 00000000..7130232a
--- /dev/null
+++ b/tools/upgrade_solver_proto_text.cpp
@@ -0,0 +1,50 @@
+// This is a script to upgrade old solver prototxts to the new format.
+// Usage:
+// upgrade_solver_proto_text old_solver_proto_file_in solver_proto_file_out
+
+#include <cstring>
+#include <fstream> // NOLINT(readability/streams)
+#include <iostream> // NOLINT(readability/streams)
+#include <string>
+
+#include "caffe/caffe.hpp"
+#include "caffe/util/io.hpp"
+#include "caffe/util/upgrade_proto.hpp"
+
+using std::ofstream;
+
+using namespace caffe; // NOLINT(build/namespaces)
+
+int main(int argc, char** argv) {
+ ::google::InitGoogleLogging(argv[0]);
+ if (argc != 3) {
+ LOG(ERROR) << "Usage: upgrade_solver_proto_text "
+ << "old_solver_proto_file_in solver_proto_file_out";
+ return 1;
+ }
+
+ SolverParameter solver_param;
+ string input_filename(argv[1]);
+ if (!ReadProtoFromTextFile(input_filename, &solver_param)) {
+ LOG(ERROR) << "Failed to parse input text file as SolverParameter: "
+ << input_filename;
+ return 2;
+ }
+ bool need_upgrade = SolverNeedsTypeUpgrade(solver_param);
+ bool success = true;
+ if (need_upgrade) {
+ success = UpgradeSolverAsNeeded(input_filename, &solver_param);
+ if (!success) {
+ LOG(ERROR) << "Encountered error(s) while upgrading prototxt; "
+ << "see details above.";
+ }
+ } else {
+ LOG(ERROR) << "File already in latest proto format: " << input_filename;
+ }
+
+ // Save new format prototxt.
+ WriteProtoToTextFile(solver_param, argv[2]);
+
+ LOG(ERROR) << "Wrote upgraded SolverParameter text proto to " << argv[2];
+ return !success;
+}