SHOGUN  v1.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Parameter.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation; either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * Written (W) 2010 Soeren Sonnenburg
8  * Copyright (C) 2010 Berlin Institute of Technology
9  */
10 #ifndef __PARAMETER_H__
11 #define __PARAMETER_H__
12 
13 #include <shogun/lib/common.h>
14 #include <shogun/io/SGIO.h>
15 #include <shogun/lib/DataType.h>
17 #include <shogun/base/DynArray.h>
18 
19 namespace shogun
20 {
22 struct TParameter
23 {
30  explicit TParameter(const TSGDataType* datatype, void* parameter,
31  const char* name, const char* description);
32 
34  ~TParameter();
35 
39  void print(const char* prefix);
40 
45  bool save(CSerializableFile* file, const char* prefix="");
46 
51  bool load(CSerializableFile* file, const char* prefix="");
52 
56  void* m_parameter;
58  char* m_name;
61 
62 private:
63  char* new_prefix(const char* s1, const char* s2);
64  void delete_cont();
65  void new_cont(index_t new_len_y, index_t new_len_x);
66  bool new_sgserial(CSGObject** param, EPrimitiveType generic,
67  const char* sgserializable_name,
68  const char* prefix);
69  bool save_ptype(CSerializableFile* file, const void* param,
70  const char* prefix);
71  bool load_ptype(CSerializableFile* file, void* param,
72  const char* prefix);
73  bool save_stype(CSerializableFile* file, const void* param,
74  const char* prefix);
75  bool load_stype(CSerializableFile* file, void* param,
76  const char* prefix);
77 };
78 
84 class Parameter
85 {
86 public:
88  explicit Parameter();
90  virtual ~Parameter();
91 
95  virtual void print(const char* prefix="");
96 
101  virtual bool save(CSerializableFile* file, const char* prefix="");
102 
107  virtual bool load(CSerializableFile* file, const char* prefix="");
108 
112  inline virtual int32_t get_num_parameters()
113  {
114  return m_params.get_num_elements();
115  }
116 
125  void set_from_parameters(Parameter* params);
126 
132  void add_parameters(Parameter* params);
133 
138  bool contains_parameter(const char* name);
139 
145  inline TParameter* get_parameter(int32_t idx)
146  {
147  return m_params.get_element(idx);
148  }
149 
150  /* ************************************************************ */
151  /* Scalar wrappers */
152 
158  void add(bool* param, const char* name,
159  const char* description="");
165  void add(char* param, const char* name,
166  const char* description="");
172  void add(int8_t* param, const char* name,
173  const char* description="");
179  void add(uint8_t* param, const char* name,
180  const char* description="");
186  void add(int16_t* param, const char* name,
187  const char* description="");
193  void add(uint16_t* param, const char* name,
194  const char* description="");
200  void add(int32_t* param, const char* name,
201  const char* description="");
207  void add(uint32_t* param, const char* name,
208  const char* description="");
214  void add(int64_t* param, const char* name,
215  const char* description="");
221  void add(uint64_t* param, const char* name,
222  const char* description="");
228  void add(float32_t* param, const char* name,
229  const char* description="");
235  void add(float64_t* param, const char* name,
236  const char* description="");
242  void add(floatmax_t* param, const char* name,
243  const char* description="");
249  void add(CSGObject** param,
250  const char* name, const char* description="");
256  void add(SGString<bool>* param, const char* name,
257  const char* description="");
263  void add(SGString<char>* param, const char* name,
264  const char* description="");
270  void add(SGString<int8_t>* param, const char* name,
271  const char* description="");
277  void add(SGString<uint8_t>* param, const char* name,
278  const char* description="");
284  void add(SGString<int16_t>* param, const char* name,
285  const char* description="");
291  void add(SGString<uint16_t>* param, const char* name,
292  const char* description="");
298  void add(SGString<int32_t>* param, const char* name,
299  const char* description="");
305  void add(SGString<uint32_t>* param, const char* name,
306  const char* description="");
312  void add(SGString<int64_t>* param, const char* name,
313  const char* description="");
319  void add(SGString<uint64_t>* param, const char* name,
320  const char* description="");
326  void add(SGString<float32_t>* param, const char* name,
327  const char* description="");
333  void add(SGString<float64_t>* param, const char* name,
334  const char* description="");
340  void add(SGString<floatmax_t>* param, const char* name,
341  const char* description="");
347  void add(SGSparseVector<bool>* param, const char* name,
348  const char* description="");
354  void add(SGSparseVector<char>* param, const char* name,
355  const char* description="");
361  void add(SGSparseVector<int8_t>* param, const char* name,
362  const char* description="");
368  void add(SGSparseVector<uint8_t>* param, const char* name,
369  const char* description="");
375  void add(SGSparseVector<int16_t>* param, const char* name,
376  const char* description="");
382  void add(SGSparseVector<uint16_t>* param, const char* name,
383  const char* description="");
389  void add(SGSparseVector<int32_t>* param, const char* name,
390  const char* description="");
396  void add(SGSparseVector<uint32_t>* param, const char* name,
397  const char* description="");
403  void add(SGSparseVector<int64_t>* param, const char* name,
404  const char* description="");
410  void add(SGSparseVector<uint64_t>* param, const char* name,
411  const char* description="");
417  void add(SGSparseVector<float32_t>* param, const char* name,
418  const char* description="");
424  void add(SGSparseVector<float64_t>* param, const char* name,
425  const char* description="");
431  void add(SGSparseVector<floatmax_t>* param, const char* name,
432  const char* description="");
433 
434  /* ************************************************************ */
435  /* Vector wrappers */
436 
443  void add_vector(bool** param, index_t* length,
444  const char* name, const char* description="");
451  void add_vector(char** param, index_t* length,
452  const char* name, const char* description="");
459  void add_vector(int8_t** param, index_t* length,
460  const char* name, const char* description="");
467  void add_vector(uint8_t** param, index_t* length,
468  const char* name, const char* description="");
475  void add_vector(int16_t** param, index_t* length,
476  const char* name, const char* description="");
483  void add_vector(uint16_t** param, index_t* length,
484  const char* name, const char* description="");
491  void add_vector(int32_t** param, index_t* length,
492  const char* name, const char* description="");
499  void add_vector(uint32_t** param, index_t* length,
500  const char* name, const char* description="");
507  void add_vector(int64_t** param, index_t* length,
508  const char* name, const char* description="");
515  void add_vector(uint64_t** param, index_t* length,
516  const char* name, const char* description="");
523  void add_vector(float32_t** param, index_t* length,
524  const char* name, const char* description="");
531  void add_vector(float64_t** param, index_t* length,
532  const char* name, const char* description="");
539  void add_vector(floatmax_t** param, index_t* length,
540  const char* name, const char* description="");
547  void add_vector(CSGObject*** param, index_t* length,
548  const char* name, const char* description="");
555  void add_vector(SGString<bool>** param, index_t* length,
556  const char* name, const char* description="");
563  void add_vector(SGString<char>** param, index_t* length,
564  const char* name, const char* description="");
571  void add_vector(SGString<int8_t>** param, index_t* length,
572  const char* name, const char* description="");
579  void add_vector(SGString<uint8_t>** param, index_t* length,
580  const char* name, const char* description="");
587  void add_vector(SGString<int16_t>** param, index_t* length,
588  const char* name, const char* description="");
595  void add_vector(SGString<uint16_t>** param, index_t* length,
596  const char* name, const char* description="");
603  void add_vector(SGString<int32_t>** param, index_t* length,
604  const char* name, const char* description="");
611  void add_vector(SGString<uint32_t>** param, index_t* length,
612  const char* name, const char* description="");
619  void add_vector(SGString<int64_t>** param, index_t* length,
620  const char* name, const char* description="");
627  void add_vector(SGString<uint64_t>** param, index_t* length,
628  const char* name, const char* description="");
635  void add_vector(SGString<float32_t>** param, index_t* length,
636  const char* name, const char* description="");
643  void add_vector(SGString<float64_t>** param, index_t* length,
644  const char* name, const char* description="");
651  void add_vector(SGString<floatmax_t>** param, index_t* length,
652  const char* name, const char* description="");
659  void add_vector(SGSparseVector<bool>** param, index_t* length,
660  const char* name, const char* description="");
667  void add_vector(SGSparseVector<char>** param, index_t* length,
668  const char* name, const char* description="");
675  void add_vector(SGSparseVector<int8_t>** param, index_t* length,
676  const char* name, const char* description="");
683  void add_vector(SGSparseVector<uint8_t>** param, index_t* length,
684  const char* name, const char* description="");
691  void add_vector(SGSparseVector<int16_t>** param, index_t* length,
692  const char* name, const char* description="");
699  void add_vector(SGSparseVector<uint16_t>** param, index_t* length,
700  const char* name, const char* description="");
707  void add_vector(SGSparseVector<int32_t>** param, index_t* length,
708  const char* name, const char* description="");
715  void add_vector(SGSparseVector<uint32_t>** param, index_t* length,
716  const char* name, const char* description="");
723  void add_vector(SGSparseVector<int64_t>** param, index_t* length,
724  const char* name, const char* description="");
731  void add_vector(SGSparseVector<uint64_t>** param, index_t* length,
732  const char* name, const char* description="");
739  void add_vector(SGSparseVector<float32_t>** param, index_t* length,
740  const char* name, const char* description="");
747  void add_vector(SGSparseVector<float64_t>** param, index_t* length,
748  const char* name, const char* description="");
755  void add_vector(SGSparseVector<floatmax_t>** param, index_t* length,
756  const char* name, const char* description="");
757 
758 
764  void add(SGVector<bool>* param, const char* name,
765  const char* description="");
771  void add(SGVector<char>* param, const char* name,
772  const char* description="");
778  void add(SGVector<int8_t>* param, const char* name,
779  const char* description="");
785  void add(SGVector<uint8_t>* param, const char* name,
786  const char* description="");
792  void add(SGVector<int16_t>* param, const char* name,
793  const char* description="");
799  void add(SGVector<uint16_t>* param, const char* name,
800  const char* description="");
806  void add(SGVector<int32_t>* param, const char* name,
807  const char* description="");
813  void add(SGVector<uint32_t>* param, const char* name,
814  const char* description="");
820  void add(SGVector<int64_t>* param, const char* name,
821  const char* description="");
827  void add(SGVector<uint64_t>* param, const char* name,
828  const char* description="");
834  void add(SGVector<float32_t>* param, const char* name,
835  const char* description="");
841  void add(SGVector<float64_t>* param, const char* name,
842  const char* description="");
848  void add(SGVector<floatmax_t>* param, const char* name,
849  const char* description="");
855  void add(SGVector<CSGObject*>* param, const char* name,
856  const char* description="");
862  void add(SGVector<SGString<bool> >* param, const char* name,
863  const char* description="");
869  void add(SGVector<SGString<char> >* param, const char* name,
870  const char* description="");
876  void add(SGVector<SGString<int8_t> >* param, const char* name,
877  const char* description="");
883  void add(SGVector<SGString<uint8_t> >* param, const char* name,
884  const char* description="");
890  void add(SGVector<SGString<int16_t> >* param, const char* name,
891  const char* description="");
897  void add(SGVector<SGString<uint16_t> >* param, const char* name,
898  const char* description="");
904  void add(SGVector<SGString<int32_t> >* param, const char* name,
905  const char* description="");
911  void add(SGVector<SGString<uint32_t> >* param, const char* name,
912  const char* description="");
918  void add(SGVector<SGString<int64_t> >* param, const char* name,
919  const char* description="");
925  void add(SGVector<SGString<uint64_t> >* param, const char* name,
926  const char* description="");
932  void add(SGVector<SGString<float32_t> >* param, const char* name,
933  const char* description="");
939  void add(SGVector<SGString<float64_t> >* param, const char* name,
940  const char* description="");
946  void add(SGVector<SGString<floatmax_t> >* param, const char* name,
947  const char* description="");
953  void add(SGVector<SGSparseVector<bool> >* param, const char* name,
954  const char* description="");
960  void add(SGVector<SGSparseVector<char> >* param, const char* name,
961  const char* description="");
967  void add(SGVector<SGSparseVector<int8_t> >* param, const char* name,
968  const char* description="");
974  void add(SGVector<SGSparseVector<uint8_t> >* param,const char* name,
975  const char* description="");
981  void add(SGVector<SGSparseVector<int16_t> >* param, const char* name,
982  const char* description="");
988  void add(SGVector<SGSparseVector<uint16_t> >* param,
989  const char* name, const char* description="");
995  void add(SGVector<SGSparseVector<int32_t> >* param, const char* name,
996  const char* description="");
1002  void add(SGVector<SGSparseVector<uint32_t> >* param,const char* name,
1003  const char* description="");
1009  void add(SGVector<SGSparseVector<int64_t> >* param, const char* name,
1010  const char* description="");
1016  void add(SGVector<SGSparseVector<uint64_t> >* param,
1017  const char* name, const char* description="");
1023  void add(SGVector<SGSparseVector<float32_t> >* param,
1024  const char* name, const char* description="");
1030  void add(SGVector<SGSparseVector<float64_t> >* param,
1031  const char* name, const char* description="");
1037  void add(SGVector<SGSparseVector<floatmax_t> >* param,
1038  const char* name, const char* description="");
1039 
1040  /* ************************************************************ */
1041  /* Matrix wrappers */
1042 
1050  void add_matrix(bool** param,
1051  index_t* length_y, index_t* length_x,
1052  const char* name, const char* description="");
1060  void add_matrix(char** param,
1061  index_t* length_y, index_t* length_x,
1062  const char* name, const char* description="");
1070  void add_matrix(int8_t** param,
1071  index_t* length_y, index_t* length_x,
1072  const char* name, const char* description="");
1080  void add_matrix(uint8_t** param,
1081  index_t* length_y, index_t* length_x,
1082  const char* name, const char* description="");
1090  void add_matrix(int16_t** param,
1091  index_t* length_y, index_t* length_x,
1092  const char* name, const char* description="");
1100  void add_matrix(uint16_t** param,
1101  index_t* length_y, index_t* length_x,
1102  const char* name, const char* description="");
1110  void add_matrix(int32_t** param,
1111  index_t* length_y, index_t* length_x,
1112  const char* name, const char* description="");
1120  void add_matrix(uint32_t** param,
1121  index_t* length_y, index_t* length_x,
1122  const char* name, const char* description="");
1130  void add_matrix(int64_t** param,
1131  index_t* length_y, index_t* length_x,
1132  const char* name, const char* description="");
1140  void add_matrix(uint64_t** param,
1141  index_t* length_y, index_t* length_x,
1142  const char* name, const char* description="");
1150  void add_matrix(float32_t** param,
1151  index_t* length_y, index_t* length_x,
1152  const char* name, const char* description="");
1160  void add_matrix(float64_t** param,
1161  index_t* length_y, index_t* length_x,
1162  const char* name, const char* description="");
1170  void add_matrix(floatmax_t** param,
1171  index_t* length_y, index_t* length_x,
1172  const char* name, const char* description="");
1180  void add_matrix(CSGObject*** param,
1181  index_t* length_y, index_t* length_x,
1182  const char* name, const char* description="");
1190  void add_matrix(SGString<bool>** param,
1191  index_t* length_y, index_t* length_x,
1192  const char* name, const char* description="");
1200  void add_matrix(SGString<char>** param,
1201  index_t* length_y, index_t* length_x,
1202  const char* name, const char* description="");
1210  void add_matrix(SGString<int8_t>** param,
1211  index_t* length_y, index_t* length_x,
1212  const char* name, const char* description="");
1220  void add_matrix(SGString<uint8_t>** param,
1221  index_t* length_y, index_t* length_x,
1222  const char* name, const char* description="");
1230  void add_matrix(SGString<int16_t>** param,
1231  index_t* length_y, index_t* length_x,
1232  const char* name, const char* description="");
1240  void add_matrix(SGString<uint16_t>** param,
1241  index_t* length_y, index_t* length_x,
1242  const char* name, const char* description="");
1250  void add_matrix(SGString<int32_t>** param,
1251  index_t* length_y, index_t* length_x,
1252  const char* name, const char* description="");
1260  void add_matrix(SGString<uint32_t>** param,
1261  index_t* length_y, index_t* length_x,
1262  const char* name, const char* description="");
1270  void add_matrix(SGString<int64_t>** param,
1271  index_t* length_y, index_t* length_x,
1272  const char* name, const char* description="");
1280  void add_matrix(SGString<uint64_t>** param,
1281  index_t* length_y, index_t* length_x,
1282  const char* name, const char* description="");
1290  void add_matrix(SGString<float32_t>** param,
1291  index_t* length_y, index_t* length_x,
1292  const char* name, const char* description="");
1300  void add_matrix(SGString<float64_t>** param,
1301  index_t* length_y, index_t* length_x,
1302  const char* name, const char* description="");
1310  void add_matrix(SGString<floatmax_t>** param,
1311  index_t* length_y, index_t* length_x,
1312  const char* name, const char* description="");
1320  void add_matrix(SGSparseVector<bool>** param,
1321  index_t* length_y, index_t* length_x,
1322  const char* name, const char* description="");
1330  void add_matrix(SGSparseVector<char>** param,
1331  index_t* length_y, index_t* length_x,
1332  const char* name, const char* description="");
1340  void add_matrix(SGSparseVector<int8_t>** param,
1341  index_t* length_y, index_t* length_x,
1342  const char* name, const char* description="");
1350  void add_matrix(SGSparseVector<uint8_t>** param,
1351  index_t* length_y, index_t* length_x,
1352  const char* name, const char* description="");
1360  void add_matrix(SGSparseVector<int16_t>** param,
1361  index_t* length_y, index_t* length_x,
1362  const char* name, const char* description="");
1370  void add_matrix(SGSparseVector<uint16_t>** param,
1371  index_t* length_y, index_t* length_x,
1372  const char* name, const char* description="");
1380  void add_matrix(SGSparseVector<int32_t>** param,
1381  index_t* length_y, index_t* length_x,
1382  const char* name, const char* description="");
1390  void add_matrix(SGSparseVector<uint32_t>** param,
1391  index_t* length_y, index_t* length_x,
1392  const char* name, const char* description="");
1400  void add_matrix(SGSparseVector<int64_t>** param,
1401  index_t* length_y, index_t* length_x,
1402  const char* name, const char* description="");
1410  void add_matrix(SGSparseVector<uint64_t>** param,
1411  index_t* length_y, index_t* length_x,
1412  const char* name, const char* description="");
1421  index_t* length_y, index_t* length_x,
1422  const char* name, const char* description="");
1431  index_t* length_y, index_t* length_x,
1432  const char* name, const char* description="");
1441  index_t* length_y, index_t* length_x,
1442  const char* name, const char* description="");
1448  void add(SGMatrix<bool>* param, const char* name,
1449  const char* description="");
1455  void add(SGMatrix<char>* param, const char* name,
1456  const char* description="");
1462  void add(SGMatrix<int8_t>* param, const char* name,
1463  const char* description="");
1469  void add(SGMatrix<uint8_t>* param, const char* name,
1470  const char* description="");
1476  void add(SGMatrix<int16_t>* param, const char* name,
1477  const char* description="");
1483  void add(SGMatrix<uint16_t>* param, const char* name,
1484  const char* description="");
1490  void add(SGMatrix<int32_t>* param, const char* name,
1491  const char* description="");
1497  void add(SGMatrix<uint32_t>* param, const char* name,
1498  const char* description="");
1504  void add(SGMatrix<int64_t>* param, const char* name,
1505  const char* description="");
1511  void add(SGMatrix<uint64_t>* param, const char* name,
1512  const char* description="");
1518  void add(SGMatrix<float32_t>* param, const char* name,
1519  const char* description="");
1525  void add(SGMatrix<float64_t>* param, const char* name,
1526  const char* description="");
1532  void add(SGMatrix<floatmax_t>* param, const char* name,
1533  const char* description="");
1539  void add(SGMatrix<CSGObject*>* param, const char* name,
1540  const char* description="");
1546  void add(SGMatrix<SGString<bool> >* param, const char* name,
1547  const char* description="");
1553  void add(SGMatrix<SGString<char> >* param, const char* name,
1554  const char* description="");
1560  void add(SGMatrix<SGString<int8_t> >* param, const char* name,
1561  const char* description="");
1567  void add(SGMatrix<SGString<uint8_t> >* param, const char* name,
1568  const char* description="");
1574  void add(SGMatrix<SGString<int16_t> >* param, const char* name,
1575  const char* description="");
1581  void add(SGMatrix<SGString<uint16_t> >* param, const char* name,
1582  const char* description="");
1588  void add(SGMatrix<SGString<int32_t> >* param, const char* name,
1589  const char* description="");
1595  void add(SGMatrix<SGString<uint32_t> >* param, const char* name,
1596  const char* description="");
1602  void add(SGMatrix<SGString<int64_t> >* param, const char* name,
1603  const char* description="");
1609  void add(SGMatrix<SGString<uint64_t> >* param, const char* name,
1610  const char* description="");
1616  void add(SGMatrix<SGString<float32_t> >* param, const char* name,
1617  const char* description="");
1623  void add(SGMatrix<SGString<float64_t> >* param, const char* name,
1624  const char* description="");
1630  void add(SGMatrix<SGString<floatmax_t> >* param, const char* name,
1631  const char* description="");
1637  void add(SGMatrix<SGSparseVector<bool> >* param, const char* name,
1638  const char* description="");
1644  void add(SGMatrix<SGSparseVector<char> >* param, const char* name,
1645  const char* description="");
1651  void add(SGMatrix<SGSparseVector<int8_t> >* param, const char* name,
1652  const char* description="");
1658  void add(SGMatrix<SGSparseVector<uint8_t> >* param,const char* name,
1659  const char* description="");
1665  void add(SGMatrix<SGSparseVector<int16_t> >* param, const char* name,
1666  const char* description="");
1672  void add(SGMatrix<SGSparseVector<uint16_t> >* param,
1673  const char* name, const char* description="");
1679  void add(SGMatrix<SGSparseVector<int32_t> >* param, const char* name,
1680  const char* description="");
1686  void add(SGMatrix<SGSparseVector<uint32_t> >* param,const char* name,
1687  const char* description="");
1693  void add(SGMatrix<SGSparseVector<int64_t> >* param, const char* name,
1694  const char* description="");
1700  void add(SGMatrix<SGSparseVector<uint64_t> >* param,
1701  const char* name, const char* description="");
1707  void add(SGMatrix<SGSparseVector<float32_t> >* param,
1708  const char* name, const char* description="");
1714  void add(SGMatrix<SGSparseVector<float64_t> >* param,
1715  const char* name, const char* description="");
1721  void add(SGMatrix<SGSparseVector<floatmax_t> >* param,
1722  const char* name, const char* description="");
1723 
1724 protected:
1725 
1728 
1735  virtual void add_type(const TSGDataType* type, void* param,
1736  const char* name,
1737  const char* description);
1738 };
1739 }
1740 #endif //__PARAMETER_H__

SHOGUN Machine Learning Toolbox - Documentation