SHOGUN  3.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Factor.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) 2013 Shell Hu
8  * Copyright (C) 2013 Shell Hu
9  */
10 
11 #ifndef __FACTOR_RELATED_H__
12 #define __FACTOR_RELATED_H__
13 
14 #include <shogun/lib/config.h>
15 
16 #include <shogun/base/SGObject.h>
17 #include <shogun/lib/SGVector.h>
20 
21 namespace shogun
22 {
23 
28 {
29 public:
32 
38 
44 
46  virtual ~CFactorDataSource();
47 
49  virtual const char* get_name() const { return "FactorDataSource"; }
50 
52  virtual bool is_sparse() const;
53 
55  virtual SGVector<float64_t> get_data() const;
56 
59 
64  virtual void set_data(SGVector<float64_t> dense);
65 
71  virtual void set_data_sparse(SGSparseVectorEntry<float64_t>* sparse, int32_t dlen);
72 
73 private:
75  void init();
76 
77 private:
79  SGVector<float64_t> m_dense;
80 
83 };
84 
89 class CFactor : public CSGObject
90 {
91 public:
93  CFactor();
94 
102 
109  CFactor(CTableFactorType* ftype, SGVector<int32_t> var_index,
110  SGSparseVector<float64_t> data_sparse);
111 
118  CFactor(CTableFactorType* ftype, SGVector<int32_t> var_index,
119  CFactorDataSource* data_source);
120 
122  virtual ~CFactor();
123 
125  virtual const char* get_name() const { return "Factor"; }
126 
129 
134  void set_factor_type(CTableFactorType* ftype);
135 
137  const SGVector<int32_t> get_variables() const;
138 
140  const int32_t get_num_vars() const;
141 
146  void set_variables(SGVector<int32_t> vars);
147 
149  const SGVector<int32_t> get_cardinalities() const;
150 
153 
156 
161  void set_data(SGVector<float64_t> data_dense);
162 
168  void set_data_sparse(SGSparseVectorEntry<float64_t>* data_sparse, int32_t dlen);
169 
171  bool is_data_dependent() const;
172 
174  bool is_data_sparse() const;
175 
180 
185  float64_t get_energy(int32_t index) const;
186 
190  void set_energies(SGVector<float64_t> ft_energies);
191 
196  void set_energy(int32_t ei, float64_t value);
197 
202  float64_t evaluate_energy(const SGVector<int32_t> state) const;
203 
205  void compute_energies();
206 
213  void compute_gradients(const SGVector<float64_t> marginals,
214  SGVector<float64_t>& parameter_gradient, double mult = 1.0) const;
215 
216 protected:
219 
222 
225 
228 
231 
234 
237 
238 private:
240  void init();
241 };
242 
243 }
244 
245 #endif
246 

SHOGUN Machine Learning Toolbox - Documentation