28 for ( int32_t i = 0 ; i < m_num_states-1 ; ++i )
52 for ( int32_t i = 0 ; i < loss_mat.
num_cols ; ++i )
54 for ( int32_t s = 0 ; s < loss_mat.
num_rows ; ++s )
69 for ( int32_t i = 0 ; i < state_seq_lhs.
vlen ; ++i )
84 for ( int32_t i = 1 ; i < state_seq.vlen-1 ; ++i )
87 state_seq[i] = seq_data[i] + 2;
93 state_seq[state_seq.vlen-1] = 1;
109 for ( int32_t i = 0 ; i < state_seq.
vlen ; ++i )
111 if ( state_seq[i] == 3 )
123 emission_weights.
zero();
136 for ( int32_t f = 0 ; f < num_feats ; ++f )
138 for ( int32_t o = 0 ; o < num_obs ; ++o )
140 em_idx = s*num_feats*num_obs + f*num_obs + o;
141 emission_weights[em_idx] = w[w_idx++];
154 for ( int32_t f = 0 ; f < num_feats ; ++f )
159 for ( int32_t i = 0 ; i < num_plif_nodes ; ++i )
160 penalties[p_idx++] = w[w_idx++];
181 transmission_weights(0,2) = 0;
182 transmission_weights(0,3) = 0;
184 transmission_weights(2,1) = 0;
185 transmission_weights(2,2) = w[0];
186 transmission_weights(2,3) = w[1];
188 transmission_weights(3,1) = 0;
189 transmission_weights(3,2) = w[3];
190 transmission_weights(3,3) = w[2];
196 int32_t num_feats, int32_t num_obs)
const
203 psi[0] = transmission_weights(2,2);
204 psi[1] = transmission_weights(2,3);
205 psi[2] = transmission_weights(3,3);
206 psi[3] = transmission_weights(3,2);
212 for ( int32_t f = 0 ; f < num_feats ; ++f )
214 for ( int32_t o = 0 ; o < num_obs ; ++o )
216 obs_idx = s*num_feats*num_obs + f*num_obs + o;
217 psi[psi_idx++] = emission_weights[obs_idx];
227 int32_t num_free_states = 2;
230 weights_to_vector(vec, transmission_weights, emission_weights, num_feats, num_obs);
235 int32_t num_feats)
const
237 REQUIRE(num_free_states == 2,
"Using the TwoStateModel only two states are free\n")
241 for ( int32_t i = 0 ; i < num_feats ; ++i )
242 monotonicity[i] = -1;
243 for ( int32_t i = num_feats ; i < 2*num_feats ; ++i )
244 monotonicity[i] = +1;
250 int32_t num_features, int32_t num_noise_features)
253 int32_t num_states = 2;
255 int32_t block_len[] = {10, 100};
257 int32_t num_blocks[] = {0, 3};
273 for ( int32_t i = 0 ; i < num_exm ; ++i)
277 rnb = num_blocks[0] +
CMath::ceil((num_blocks[1]-num_blocks[0])*
280 for ( int32_t j = 0 ; j < rnb ; ++j )
282 rl = block_len[0] +
CMath::ceil((block_len[1]-block_len[0])*
286 for ( int32_t idx = rp-1 ; idx < rp+rl ; ++idx )
289 ll[i*exm_len + idx] = 1;
308 for ( int32_t i = 0 ; i < num_features ; ++i )
313 for ( int32_t j = 0 ; j < d1.
vlen ; ++j )
316 for ( int32_t j = 0 ; j < d2.
vlen ; ++j )
317 d2[j] = distort[ distort.
vlen-d2.
vlen+j ];
319 for ( int32_t j = 0 ; j < d1.
vlen ; ++j )
320 lf[ d1[j] ] = lf[ d2[j] ];
323 for ( int32_t j = 0 ; j < signal.
num_cols ; ++j )
328 for ( int32_t i = 0 ; i < num_noise_features ; ++i )
331 for ( int32_t j = 0 ; j < signal.
num_cols ; ++j )
339 bool use_plifs =
true;
SGMatrix< float64_t > m_state_loss_mat
void range_fill(T start=0)
static void permute(SGVector< T > v, CRandom *rand=NULL)
virtual ~CTwoStateModel()
void set_plif_penalty(SGVector< float64_t > p_penalties)
virtual void reshape_emission_params(SGVector< float64_t > &emission_weights, SGVector< float64_t > w, int32_t num_feats, int32_t num_obs)
static float64_t ceil(float64_t d)
static const float64_t INFTY
infinity
static float32_t normal_random(float32_t mean, float32_t std_dev)
Class CHMSVMModel that represents the application specific model and contains the application depende...
SGVector< float64_t > m_q
virtual SGMatrix< float64_t > loss_matrix(CSequence *label_seq)
Class CSequenceLabels used e.g. in the application of Structured Output (SO) learning to Hidden Marko...
class CStateModel base, abstract class for the internal state representation used in the CHMSVMModel...
virtual CSequence * states_to_labels(SGVector< int32_t > state_seq) const
SGVector< float64_t > m_p
Class CSequence to be used in the application of Structured Output (SO) learning to Hidden Markov Sup...
virtual float64_t loss(CSequence *label_seq_lhs, CSequence *label_seq_rhs)
virtual void weights_to_vector(SGVector< float64_t > &psi, SGMatrix< float64_t > transmission_weights, SGVector< float64_t > emission_weights, int32_t num_feats, int32_t num_obs) const
virtual SGVector< int32_t > labels_to_states(CSequence *label_seq) const
void add_vector_label(SGVector< int32_t > label)
Dynamic array class for CSGObject pointers that creates an array that can be used like a list or an a...
int32_t m_num_transmission_params
all of classes and functions are contained in the shogun namespace
virtual void reshape_transmission_params(SGMatrix< float64_t > &transmission_weights, SGVector< float64_t > w)
Class CMatrixFeatures used to represent data whose feature vectors are better represented with matric...
static CHMSVMModel * simulate_data(int32_t num_exm, int32_t exm_len, int32_t num_features, int32_t num_noise_features)
SGVector< int32_t > get_data() const
CSGObject * get_element(int32_t index) const
virtual SGVector< int32_t > get_monotonicity(int32_t num_free_states, int32_t num_feats) const
static float64_t round(float64_t d)
void set_const(T const_elem)
void set_const(T const_elem)