Medial Code Documentation
Loading...
Searching...
No Matches
MedMicNet.h
1#pragma once
3
4
5//======================================================================================
6// micNet: Home brewed implimenatation for Neural Nets and Deep Learning
7//======================================================================================
9
10 string init_string;
11};
12
13class MedMicNet : public MedPredictor {
14private:
15 vector<micNet> model_per_thread;
16 bool is_prepared = false;
17public:
18 // Model
19 micNet mic;
20
23
24 // Function
25 MedMicNet() { classifier_type = MODEL_MIC_NET; mic.params.init_defaults(); }
26 MedMicNet(void *params) { mic_params = *(MedMicNetParams *)params; mic.init_from_string(mic_params.init_string); }
27 MedMicNet(MedMicNetParams& params) { mic_params = params; mic.init_from_string(mic_params.init_string); }
28 int init(void *params) { mic_params = *(MedMicNetParams *)params; return mic.init_from_string(mic_params.init_string); }
31 int init_from_string(string initialization_text) {
32 cerr << "MedMicNet init_from_string ! :: " << initialization_text << "\n";
33 mic_params.init_string = initialization_text;
34 cerr << "calling init_from_string of micNet\n"; fflush(stderr);
35 return mic.init_from_string(initialization_text);
36 }
37
39 int init(map<string, string>& mapper) {
40 cerr << "MedMicNet:: init map :: not supported, only init_from_string supported....\n";
41 return -1;
42 }
43 int set_params(map<string, string>& mapper) {
44 cerr << "MedMicNet:: init map :: not supported, only init_from_string supported....\n";
45 return -1;
46 }
47 // int init(const string &init_str); // allows init of parameters from a string. Format is: param=val,... , for sampsize: 0 is NULL, a list of values is separated by ; (and not ,)
48 void init_defaults() { mic_params.init_string = ""; mic.params.init_defaults(); }
49
50 int Learn(float *x, float *y, const float *w, int nsamples, int nftrs) {
51 cerr << "MedMicNet:: Learn :: API's with MedMat are preferred....\n";
52 MedMat<float> xmat; xmat.load(x, nsamples, nftrs);
53 MedMat<float> ymat; ymat.load(y, nsamples, 1);
54 MedMat<float> wmat;
55 if (w != NULL) wmat.load(w, nsamples, 1);
56 return learn(xmat, ymat, wmat.get_vec());
57 }
58
59 int Predict(float *x, float *&preds, int nsamples, int nftrs) const {
60 cerr << "MedMicNet:: Predict :: API's with MedMat are preferred....\n";
61 MedMat<float> xmat; xmat.load(x, nsamples, nftrs);
62 vector<float> vpreds;
63 int rc = predict(xmat, vpreds);
64 if (preds == NULL) preds = new float[nsamples];
65 memcpy(preds, &vpreds[0], sizeof(float)*nsamples);
66 return rc;
67 }
68
69 int learn(MedMat<float> &x, MedMat<float> &y, vector<float> &wgt) { return mic.learn(x, y, wgt); }
70 int learn(MedMat<float> &x, MedMat<float> &y) { return mic.learn(x, y); }
71 int predict(MedMat<float> &x, vector<float> &preds) const { micNet mutable_net = mic; return mutable_net.predict(x, preds); }
72
73 void prepare_predict_single();
74 void predict_single(const vector<float> &x, vector<float> &preds) const;
75
76 // Predictions per sample
77 int n_preds_per_sample() const { return mic.n_preds_per_sample(); }
78
79 // (De)Serialize - virtual class methods that do the actuale (De)Serializing. Should be created for each predictor
80 ADD_CLASS_NAME(MedMicNet)
82
83
84};
85
MedAlgo - APIs to different algorithms: Linear Models, RF, GBM, KNN, and more.
@ MODEL_MIC_NET
to_use:"micNet" Home brew Neural Net implementation (Allows deep learning) - creates MedMicNet
Definition MedAlgo.h:54
#define ADD_SERIALIZATION_FUNCS(...)
Definition SerializableObject.h:122
#define MEDSERIALIZE_SUPPORT(Type)
Definition SerializableObject.h:108
Definition MedMat.h:63
Definition MedMicNet.h:13
int init_from_string(string initialization_text)
The parsed fields from init command.
Definition MedMicNet.h:31
int Learn(float *x, float *y, const float *w, int nsamples, int nftrs)
Learn should be implemented for each model.
Definition MedMicNet.h:50
MedMicNetParams mic_params
Parameters.
Definition MedMicNet.h:22
int Predict(float *x, float *&preds, int nsamples, int nftrs) const
Predict should be implemented for each model.
Definition MedMicNet.h:59
int n_preds_per_sample() const
Number of predictions per sample. typically 1 - but some models return several per sample (for exampl...
Definition MedMicNet.h:77
int init(map< string, string > &mapper)
MedMicNet:: init map :: not supported, only init_from_string supported.
Definition MedMicNet.h:39
Base Interface for predictor.
Definition MedAlgo.h:78
MedPredictorTypes classifier_type
The Predicotr enum type.
Definition MedAlgo.h:80
Definition micNet.h:294
Definition MedMicNet.h:8