SHOGUN  v3.2.0
Factor.h
浏览该文件的文档.
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  float64_t get_energy(int32_t index) const;
181 
185  void set_energies(SGVector<float64_t> ft_energies);
186 
191  void set_energy(int32_t ei, float64_t value);
192 
197  float64_t evaluate_energy(const SGVector<int32_t> state) const;
198 
200  void compute_energies();
201 
208  void compute_gradients(const SGVector<float64_t> marginals,
209  SGVector<float64_t>& parameter_gradient, double mult = 1.0) const;
210 
211 protected:
214 
217 
220 
223 
226 
229 
232 
233 private:
235  void init();
236 };
237 
238 }
239 
240 #endif
241 
void set_energy(int32_t ei, float64_t value)
Definition: Factor.cpp:188
bool is_data_sparse() const
Definition: Factor.cpp:156
float64_t get_energy(int32_t index) const
Definition: Factor.cpp:175
CTableFactorType * get_factor_type() const
Definition: Factor.cpp:95
SGSparseVector< float64_t > get_data_sparse() const
Definition: Factor.cpp:130
virtual SGVector< float64_t > get_data() const
Definition: Factor.cpp:281
const SGVector< int32_t > get_variables() const
Definition: Factor.cpp:107
void set_variables(SGVector< int32_t > vars)
Definition: Factor.cpp:112
void compute_energies()
Definition: Factor.cpp:205
SGVector< float64_t > get_data() const
Definition: Factor.cpp:122
virtual const char * get_name() const
Definition: Factor.h:123
virtual SGSparseVector< float64_t > get_data_sparse() const
Definition: Factor.cpp:286
void compute_gradients(const SGVector< float64_t > marginals, SGVector< float64_t > &parameter_gradient, double mult=1.0) const
Definition: Factor.cpp:224
float64_t evaluate_energy(const SGVector< int32_t > state) const
Definition: Factor.cpp:199
virtual void set_data_sparse(SGSparseVectorEntry< float64_t > *sparse, int32_t dlen)
Definition: Factor.cpp:296
bool m_is_data_dep
Definition: Factor.h:231
SGVector< float64_t > get_energies() const
Definition: Factor.cpp:164
bool is_data_dependent() const
Definition: Factor.cpp:151
Class SGObject is the base class of all shogun objects.
Definition: SGObject.h:102
SGSparseVector< float64_t > m_data_sparse
Definition: Factor.h:228
SGVector< int32_t > m_var_index
Definition: Factor.h:216
double float64_t
Definition: common.h:48
virtual ~CFactor()
Definition: Factor.cpp:89
Class CFactorDataSource Source for factor data. In some cases, the same data can be shared by many fa...
Definition: Factor.h:25
virtual void set_data(SGVector< float64_t > dense)
Definition: Factor.cpp:291
void set_energies(SGVector< float64_t > ft_energies)
Definition: Factor.cpp:180
virtual const char * get_name() const
Definition: Factor.h:47
all of classes and functions are contained in the shogun namespace
Definition: class_list.h:16
void set_data_sparse(SGSparseVectorEntry< float64_t > *data_sparse, int32_t dlen)
Definition: Factor.cpp:144
virtual bool is_sparse() const
Definition: Factor.cpp:276
Class CTableFactorType the way that store assignments of variables and energies in a table or a multi...
Definition: FactorType.h:120
void set_factor_type(CTableFactorType *ftype)
Definition: Factor.cpp:101
virtual ~CFactorDataSource()
Definition: Factor.cpp:272
CTableFactorType * m_factor_type
Definition: Factor.h:213
Class CFactor A factor is defined on a clique in the factor graph. Each factor can have its own data...
Definition: Factor.h:87
void set_data(SGVector< float64_t > data_dense)
Definition: Factor.cpp:138
const SGVector< int32_t > get_cardinalities() const
Definition: Factor.cpp:117
SGVector< float64_t > m_data
Definition: Factor.h:225
CFactorDataSource * m_data_source
Definition: Factor.h:222
SGVector< float64_t > m_energies
Definition: Factor.h:219

SHOGUN Machine Learning Toolbox - Documentation