/* * Copyright (c) 2018 Samsung Electronics Co., Ltd. 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 "InitCommand.h" #include #include #include #include #include #include #include int InitCommand::run(int, const char *const *) const { // Read prototxt from standard input ::caffe::NetParameter in; { google::protobuf::io::IstreamInputStream is{&std::cin}; if (!google::protobuf::TextFormat::Parse(&is, &in)) { std::cerr << "ERROR: Failed to parse prototxt" << std::endl; return 255; } } // Upgrade prototxt if necessary if (::caffe::NetNeedsUpgrade(in)) { if (!::caffe::UpgradeNetAsNeeded("", &in)) { std::cerr << "ERROR: Failed to upgrade prototxt" << std::endl; return 255; } } ::caffe::Net net(in); // Extract initialized parameters ::caffe::NetParameter out; { net.ToProto(&out); } // Write initialized parameters to standard output google::protobuf::io::OstreamOutputStream os{&std::cout}; google::protobuf::TextFormat::Print(out, &os); return 0; }