SHOGUN
v3.0.0
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
src
shogun
structure
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
>
16
#include <
shogun/lib/SGSparseVector.h
>
17
#include <
shogun/structure/FactorType.h
>
18
19
namespace
shogun
20
{
21
25
class
CFactorDataSource
:
public
CSGObject
26
{
27
public
:
29
CFactorDataSource
();
30
35
CFactorDataSource
(
SGVector<float64_t>
dense);
36
41
CFactorDataSource
(
SGSparseVector<float64_t>
sparse);
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
56
virtual
SGSparseVector<float64_t>
get_data_sparse
()
const
;
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
80
SGSparseVector<float64_t>
m_sparse;
81
};
82
87
class
CFactor
:
public
CSGObject
88
{
89
public
:
91
CFactor
();
92
99
CFactor
(
CTableFactorType
* ftype,
SGVector<int32_t>
var_index,
SGVector<float64_t>
data);
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
126
CTableFactorType
*
get_factor_type
()
const
;
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
147
SGVector<float64_t>
get_data
()
const
;
148
150
SGSparseVector<float64_t>
get_data_sparse
()
const
;
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
174
SGVector<float64_t>
get_energies
()
const
;
175
179
SGVector<float64_t>
get_energies
();
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
:
218
CTableFactorType
*
m_factor_type
;
219
221
SGVector<int32_t>
m_var_index
;
222
224
SGVector<float64_t>
m_energies
;
225
227
CFactorDataSource
*
m_data_source
;
228
230
SGVector<float64_t>
m_data
;
231
233
SGSparseVector<float64_t>
m_data_sparse
;
234
236
bool
m_is_data_dep
;
237
238
private
:
240
void
init();
241
};
242
243
}
244
245
#endif
246
SHOGUN
Machine Learning Toolbox - Documentation