_label_index.push_back(label_idx);
_fv_cnt_per_label[label_idx]++;
- vector<float> oneHotEncoding;
-
- for (size_t num = 0; num < label_cnt; ++num)
- oneHotEncoding.push_back(label_idx == num ? 1.0f : 0.0f);
-
- _labels.push_back(oneHotEncoding);
+ _labels.emplace_back(label_cnt);
+ _labels.back()[label_idx] = 1.0f;
_feature_vector_size = feature_vec.size();
_label_count = label_cnt;
}
* |feature vector|label index|
* ----------------------------
*/
- size_t line_size_in_bytes = fvh.feature_size * sizeof(float) + sizeof(unsigned int);
-
_feature_vector_size = fvh.feature_size;
_label_count = fvh.label_cnt;
- vector<float> line_data(fvh.feature_size + 1);
+ _data.resize(fvh.data_set_cnt, vector<float>(_feature_vector_size));
+ _labels.resize(fvh.data_set_cnt, vector<float>(new_label_cnt));
+ _label_index.resize(fvh.data_set_cnt);
for (size_t idx = 0; idx < fvh.data_set_cnt; ++idx) {
- inFile.read(reinterpret_cast<char *>(line_data.data()), static_cast<streamsize>(line_size_in_bytes));
-
- vector<float> data;
-
- copy_n(line_data.begin(), _feature_vector_size, back_inserter(data));
- _data.push_back(data);
+ inFile.read(reinterpret_cast<char *>(_data[idx].data()),
+ static_cast<streamsize>(_feature_vector_size * sizeof(float)));
unsigned int label_idx;
+ inFile.read(reinterpret_cast<char *>(&label_idx), static_cast<streamsize>(sizeof(unsigned int)));
- memcpy(&label_idx, reinterpret_cast<void *>(line_data.data() + _feature_vector_size), sizeof(unsigned int));
-
- vector<float> label;
+ if (label_idx >= new_label_cnt) {
+ LOGE("Invalid label index");
+ throw MEDIA_VISION_ERROR_INVALID_OPERATION;
+ }
// max label count may be changed so update one hot encoding table.
- for (size_t num = 0; num < new_label_cnt; ++num)
- label.push_back(label_idx == num ? 1.0f : 0.0f);
+ _labels[idx][label_idx] = 1.0f;
- _labels.push_back(label);
- _label_index.push_back(label_idx);
+ _label_index[idx] = label_idx;
_fv_cnt_per_label[label_idx]++;
}