2 * Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <arser/arser.h>
20 #include <foder/FileLoader.h>
29 int entry(int argc, char **argv)
32 "circle-tensordump allows users to retrieve tensor information from a Circle model file"};
34 arser.add_argument("circle").nargs(1).type(arser::DataType::STR).help("Circle file path to dump");
35 arser.add_argument("--tensors").nargs(0).help("Dump to console");
36 arser.add_argument("--tensors_to_hdf5")
38 .type(arser::DataType::STR)
39 .help("Dump to hdf5 file. Specify hdf5 file path to be dumped");
43 arser.parse(argc, argv);
45 catch (const std::runtime_error &err)
47 std::cout << err.what() << std::endl;
52 std::unique_ptr<circletensordump::DumpInterface> dump;
54 std::string model_file = arser.get<std::string>("circle");
55 std::string output_path;
56 if (arser["--tensors_to_hdf5"])
58 dump = std::move(std::make_unique<circletensordump::DumpTensorsToHdf5>());
59 output_path = arser.get<std::string>("--tensors_to_hdf5");
61 if (arser["--tensors"])
63 dump = std::move(std::make_unique<circletensordump::DumpTensors>());
66 // Load Circle model from a circle file
67 foder::FileLoader fileLoader{model_file};
68 std::vector<char> modelData = fileLoader.load();
69 const circle::Model *circleModel = circle::GetModel(modelData.data());
70 if (circleModel == nullptr)
72 std::cerr << "ERROR: Failed to load circle '" << model_file << "'" << std::endl;
76 dump->run(std::cout, circleModel, output_path);