SHOGUN  v3.0.0
 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/base/SGObject.h>
15 #include <shogun/lib/SGVector.h>
18 
19 namespace shogun
20 {
21 
26 {
27 public:
30 
36 
42 
44  virtual ~CFactorDataSource();
45 
47  virtual const char* get_name() const { return "FactorDataSource"; }
48 
50  virtual bool is_sparse() const;
51 
53  virtual SGVector<float64_t> get_data() const;
54 
57 
62  virtual void set_data(SGVector<float64_t> dense);
63 
69  virtual void set_data_sparse(SGSparseVectorEntry<float64_t>* sparse, int32_t dlen);
70 
71 private:
73  void init();
74 
75 private:
77  SGVector<float64_t> m_dense;
78 
81 };
82 
87 class CFactor : public CSGObject
88 {
89 public:
91  CFactor();
92 
100 
107  CFactor(CTableFactorType* ftype, SGVector<int32_t> var_index,
108  SGSparseVector<float64_t> data_sparse);
109 
116  CFactor(CTableFactorType* ftype, SGVector<int32_t> var_index,
117  CFactorDataSource* data_source);
118 
120  virtual ~CFactor();
121 
123  virtual const char* get_name() const { return "Factor"; }
124 
127 
132  void set_factor_type(CTableFactorType* ftype);
133 
135  const SGVector<int32_t> get_variables() const;
136 
141  void set_variables(SGVector<int32_t> vars);
142 
144  const SGVector<int32_t> get_cardinalities() const;
145 
148 
151 
156  void set_data(SGVector<float64_t> data_dense);
157 
163  void set_data_sparse(SGSparseVectorEntry<float64_t>* data_sparse, int32_t dlen);
164 
166  bool is_data_dependent() const;
167 
169  bool is_data_sparse() const;
170 
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