22 CMultitaskLinearMachine::CMultitaskLinearMachine() :
26 register_parameters();
37 register_parameters();
45 void CMultitaskLinearMachine::register_parameters()
88 for (int32_t i=0; i<n_tasks; i++)
90 set<index_t> indices_set;
92 for (int32_t j=0; j<task_indices.
vlen; j++)
93 indices_set.insert(task_indices[j]);
98 for (int32_t i=0; i<n_tasks; i++)
107 vector< vector<index_t> > cutted_task_indices;
108 for (int32_t i=0; i<n_tasks; i++)
109 cutted_task_indices.push_back(vector<index_t>());
110 for (int32_t i=0; i<indices.
vlen; i++)
112 for (int32_t j=0; j<n_tasks; j++)
116 cutted_task_indices[j].push_back(indices[i]);
122 for (int32_t i=0; i<n_tasks; i++)
125 for (int32_t j=0; j<(int)cutted_task_indices[i].size(); j++)
126 tasks[i][j] = cutted_task_indices[i][j];
130 for (int32_t i=0; i<n_tasks; i++)
147 for (int32_t i=0; i<indices.
vlen; i++)
149 for (int32_t j=0; j<n_tasks; j++)
173 SG_ERROR(
"Specified features are not of type CDotFeatures\n");
184 for (int32_t i=0; i<num; i++)
193 for (int32_t i=0; i<w_.
vlen; i++)
220 map<index_t,index_t> subset_inv_map = map<index_t,index_t>();
221 for (int32_t i=0; i<sstack->
get_size(); i++)
225 for (int32_t i=0; i<n_tasks; i++)
230 vector<index_t> cutted = vector<index_t>();
231 for (int32_t j=0; j<task.
vlen; j++)
233 if (subset_inv_map.count(task[j]))
234 cutted.push_back(subset_inv_map[task[j]]);
237 for (int32_t j=0; j<cutted_task.vlen; j++)
238 cutted_task[j] = cutted[j];
240 subset_tasks_indices[i] = cutted_task;
242 for (int32_t i=0; i<n_tasks; i++)
246 return subset_tasks_indices;