// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include #include #include #include "caffe/proto/caffe.pb.h" #include "CaffeParser.hpp" namespace armnnCaffeParser { class NetParameterInfo; class LayerParameterInfo; class RecordByRecordCaffeParser : public ICaffeParser::CaffeParserImpl { public: /// Create the network from a protobuf binary file on disk virtual armnn::INetworkPtr CreateNetworkFromBinaryFile( const char* graphFile, const std::map& inputShapes, const std::vector& requestedOutputs) override; RecordByRecordCaffeParser(); private: void ProcessLayers(const NetParameterInfo& netParameterInfo, std::vector& layerInfo, const std::vector& m_RequestedOutputs, std::vector& sortedNodes); armnn::INetworkPtr LoadLayers(std::ifstream& ifs, std::vector& sortedNodes, const NetParameterInfo& netParameterInfo); std::vector GetInputs( const LayerParameterInfo& layerParam); std::map m_CaffeLayersByTopName; std::vector m_RequestedOutputs; }; } // namespace armnnCaffeParser