29 init(file, is_labelled, size);
35 if (parser.is_running())
42 ASSERT(index>=0 && index<current_num_features)
43 return current_sgvector.get_feature(index);
55 int32_t n=current_num_features;
57 current_num_features=num;
82 ASSERT(dim>=current_num_features)
84 return current_sgvector.dense_dot(alpha, vec, dim, b);
92 int32_t current_length = current_sgvector.num_feat_entries;
98 for (int32_t i=0; i<current_length; i++) {
99 if (current_vector[i].feat_index < vec2_len) {
113 int32_t current_length = current_sgvector.num_feat_entries;
119 for (int32_t i=0; i<current_length; i++) {
120 if (current_vector[i].feat_index < vec2_len) {
133 if (vec2_len < current_num_features)
135 SG_ERROR(
"dimension of vec (=%d) does not match number of features (=%d)\n",
136 vec2_len, current_num_features);
140 int32_t num_feat=current_sgvector.num_feat_entries;
146 for (int32_t i=0; i<num_feat; i++)
147 vec2[sv[i].feat_index]+= alpha*
CMath::abs(sv[i].entry);
151 for (int32_t i=0; i<num_feat; i++)
152 vec2[sv[i].feat_index]+= alpha*sv[i].entry;
161 if (vec2_len < current_num_features)
163 SG_ERROR(
"dimension of vec (=%d) does not match number of features (=%d)\n",
164 vec2_len, current_num_features);
168 int32_t num_feat=current_sgvector.num_feat_entries;
174 for (int32_t i=0; i<num_feat; i++)
175 vec2[sv[i].feat_index]+= alpha*
CMath::abs(sv[i].entry);
179 for (int32_t i=0; i<num_feat; i++)
180 vec2[sv[i].feat_index]+= alpha*sv[i].entry;
188 return current_sgvector.num_feat_entries;
194 int32_t current_length = current_sgvector.num_feat_entries;
201 for (int32_t i=0; i<current_length; i++)
202 sq += current_vector[i].entry * current_vector[i].entry;
214 get_vector().sort_features(
true);
216 ASSERT(old_ptr == current_sgvector.features);
228 if (current_sgvector.features)
240 parser.set_read_vector_and_label
244 #define GET_FEATURE_TYPE(f_type, sg_type) \
245 template<> EFeatureType CStreamingSparseFeatures<sg_type>::get_feature_type() const \
263 #undef GET_FEATURE_TYPE
267 void CStreamingSparseFeatures<T>::init()
271 current_num_features=-1;
277 void CStreamingSparseFeatures<T>::init(CStreamingFile* file,
282 has_labels = is_labelled;
285 parser.init(file, is_labelled, size);
286 parser.set_free_vector_after_release(
false);
292 if (!parser.is_running())
293 parser.start_parser();
305 int32_t current_length = 0;
309 ret_value = (bool) parser.get_next_example(current_vector,
321 current_num_features =
CMath::max(current_num_features, current_dimension);
330 return current_sgvector;
338 return current_label;
344 parser.finalize_example();
350 return current_num_features;
363 return current_num_features;
369 return current_sgvector.num_feat_entries;