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 SG_FREE(tasks_indices);
105 vector< vector<index_t> > cutted_task_indices;
106 for (int32_t i=0; i<n_tasks; i++)
107 cutted_task_indices.push_back(vector<index_t>());
108 for (int32_t i=0; i<indices.
vlen; i++)
110 for (int32_t j=0; j<n_tasks; j++)
114 cutted_task_indices[j].push_back(indices[i]);
120 for (int32_t i=0; i<n_tasks; i++)
123 for (int32_t j=0; j<(int)cutted_task_indices[i].size(); j++)
124 tasks[i][j] = cutted_task_indices[i][j];
143 for (int32_t i=0; i<indices.
vlen; i++)
145 for (int32_t j=0; j<n_tasks; j++)
169 SG_ERROR(
"Specified features are not of type CDotFeatures\n")
180 for (int32_t i=0; i<num; i++)
189 for (int32_t i=0; i<w_.
vlen; i++)
216 map<index_t,index_t> subset_inv_map = map<index_t,index_t>();
217 for (int32_t i=0; i<sstack->
get_size(); i++)
221 for (int32_t i=0; i<n_tasks; i++)
225 vector<index_t> cutted = vector<index_t>();
226 for (int32_t j=0; j<task.
vlen; j++)
228 if (subset_inv_map.count(task[j]))
229 cutted.push_back(subset_inv_map[task[j]]);
232 for (int32_t j=0; j<cutted_task.vlen; j++)
233 cutted_task[j] = cutted[j];
235 subset_tasks_indices[i] = cutted_task;
237 SG_FREE(tasks_indices);
239 return subset_tasks_indices;