53 void CFactorType::init()
181 int32_t old_ei, int32_t var_index, int32_t var_state)
const
196 for (int32_t vi = 0; vi < var_index.
size(); vi++)
198 int32_t cur_var = var_index[vi];
212 if (factor_data.
size() == 0)
221 energies = factor_data.
clone();
231 energy_cur += factor_data[di] *
m_w[di + ei*m_data_size];
233 energies[ei] = energy_cur;
256 energies[data_ptr[n].feat_index] = data_ptr[n].entry;
268 energy_cur += data_ptr[n].
entry
271 energies[ei] = energy_cur;
282 if (factor_data.
size() == 0)
287 parameter_gradient[ei] = mult * marginals[ei];
291 SG_ERROR(
"%s::compute_gradients(): no parameters for this factor type.\n",
get_name());
303 mult * factor_data[di] * marginals[ei];
321 parameter_gradient[ei] = mult * marginals[ei];
325 SG_ERROR(
"%s::compute_gradients(): no parameters for this factor type.\n",
get_name());
337 mult * data_ptr[n].entry * marginals[ei];
virtual void set_type_id(int32_t id)
Class CFactorType defines the way of factor parameterization.
int32_t index_from_assignment(const SGVector< int32_t > assig) const
virtual void compute_energies(const SGVector< float64_t > factor_data, SGVector< float64_t > &energies) const
SGVector< float64_t > m_w
virtual SGVector< float64_t > get_w()
SGVector< int32_t > m_cards
SGVector< int32_t > m_cumprod_cards
virtual int32_t get_type_id() const
void set_w(SGVector< float64_t > w)
Class SGObject is the base class of all shogun objects.
virtual void compute_gradients(const SGVector< float64_t > factor_data, const SGVector< float64_t > marginals, SGVector< float64_t > ¶meter_gradient, double mult) const
int32_t m_num_assignments
virtual void set_cardinalities(SGVector< int32_t > cards)
int32_t index_from_new_state(int32_t old_ei, int32_t var_index, int32_t var_state) const
virtual ~CTableFactorType()
SGSparseVectorEntry< T > * features
int32_t state_from_index(int32_t ei, int32_t var_index) const
all of classes and functions are contained in the shogun namespace
virtual int32_t get_w_dim() const
SGVector< T > clone() const
virtual const SGVector< int32_t > get_cardinalities() const
virtual int32_t get_num_vars()
void resize_vector(int32_t n)
SGVector< int32_t > assignment_from_index(int32_t ei) const
int32_t index_from_universe_assignment(const SGVector< int32_t > assig, const SGVector< int32_t > var_index) const
#define SG_UNSTABLE(func,...)
virtual const char * get_name() const
virtual int32_t get_num_assignments() const