| #pragma once | |
| #include <memory> | |
| #include "caffe2/core/tensor.h" | |
| #include "caffe2/core/workspace.h" | |
| #include "caffe2/proto/metanet.pb.h" | |
| #include "caffe2/proto/predictor_consts.pb.h" | |
| namespace caffe2 { | |
| /* | |
| * Parameters for a Predictor provided by name. | |
| * They are stored as shared_ptr to accommodate parameter sharing | |
| */ | |
| using PredictorParameters = std::map<std::string, std::shared_ptr<Blob>>; | |
| /** | |
| * Stores parameters nessasary for creating a PredictorInterface object. | |
| */ | |
| struct TORCH_API PredictorConfig { | |
| // A map of parameter name to Tensor object. Predictor is supposed to | |
| // guarantee constness of all these Tensor objects. | |
| std::shared_ptr<PredictorParameters> parameters; | |
| std::shared_ptr<NetDef> predict_net; | |
| // Input names of a model. User will have to provide all of the inputs | |
| // for inference | |
| std::vector<std::string> input_names; | |
| // Output names of a model. All outputs will be returned as results of | |
| // inference | |
| std::vector<std::string> output_names; | |
| // Parameter names of a model. Should be a subset of parameters map passed in. | |
| // We provide a separate set of parameter names here as whole parameter set | |
| // passed in by a user might contain extra tensors used by other models | |
| std::vector<std::string> parameter_names; | |
| // TODO We still save ws is because of the current design of workspace and | |
| // tensor. Once tensor support intrusive_ptr, we'll get rid of this and use | |
| // parameters to construct Workspace | |
| std::shared_ptr<Workspace> ws; | |
| }; | |
| TORCH_API Workspace | |
| makeWorkspace(std::shared_ptr<PredictorParameters> parameters); | |
| TORCH_API PredictorConfig makePredictorConfig( | |
| const MetaNetDef& net, | |
| Workspace* parent = nullptr, | |
| bool run_init = true); | |
| TORCH_API PredictorConfig makePredictorConfig( | |
| const NetDef& init_net, | |
| const NetDef& run_net, | |
| Workspace* parent = nullptr, | |
| bool run_init = true, | |
| int optimization = 1); | |
| } // namespace caffe2 |