forked from leovandriel/caffe2_cpp_tutorial
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodel.h
More file actions
77 lines (62 loc) · 2.5 KB
/
model.h
File metadata and controls
77 lines (62 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#ifndef UTIL_MODEL_H
#define UTIL_MODEL_H
#include <caffe2/core/net.h>
#include "caffe2/util/net.h"
class ModelMeta;
namespace caffe2 {
class ModelUtil {
public:
ModelUtil(NetDef &init_net, NetDef &predict_net,
const std::string &name = "");
ModelUtil(NetUtil &init, NetUtil &predict);
virtual ~ModelUtil();
void AddDatabaseOps(const std::string &name, const std::string &data,
const std::string &db, const std::string &db_type,
int batch_size);
void AddXentOps(const std::string &output);
void AddIterOps();
void AddSgdOps();
void AddMomentumOps();
void AddAdagradOps();
void AddAdamOps();
void AddRmsPropOps();
void AddOptimizerOps(std::string &optimizer);
void AddTestOps(const std::string &output);
void AddTrainOps(const std::string &output, float base_rate,
std::string &optimizer);
void AddFcOps(const std::string &input, const std::string &output,
int in_size, int out_size, bool test = false);
void AddConvOps(const std::string &input, const std::string &output,
int in_size, int out_size, int stride, int padding,
int kernel, bool test = false);
void AddSpatialBNOp(const std::string &input, const std::string &output,
int size, float epsilon = 1e-5f, float momentum = 0.9,
bool test = false);
std::vector<std::string> Params() { return predict.CollectParams(); }
void Split(const std::string &layer, ModelUtil &firstModel,
ModelUtil &secondModel, bool force_cpu, bool inclusive = true);
void CopyTrain(const std::string &layer, int out_size,
ModelUtil &train) const;
void CopyTest(ModelUtil &test) const;
void CopyDeploy(ModelUtil &deploy, Workspace &workspace) const;
size_t Write(const std::string &path_prefix) const;
size_t Read(const std::string &path_prefix);
size_t WriteBundle(const std::string &filename) const;
size_t ReadBundle(const std::string &filename);
size_t WriteMeta(const std::string &filename) const;
size_t ReadMeta(const std::string &filename);
void SetName(const std::string &name);
void SetDeviceCUDA();
std::string Short();
std::string Proto();
void input_dims(const std::vector<int> &dims);
std::vector<int> input_dims();
void output_labels(const std::vector<std::string> &labels);
std::vector<std::string> output_labels();
public:
NetUtil init;
NetUtil predict;
ModelMeta *meta;
};
} // namespace caffe2
#endif // UTIL_MODEL_H