Vowpal Wabbit
Classes | Namespaces | Functions
example.cc File Reference
#include <cstdint>
#include <algorithm>
#include "gd.h"

Go to the source code of this file.

Classes

struct  features_and_source
 
struct  full_features_and_source
 

Namespaces

 VW
 

Functions

float collision_cleanup (features &fs)
 
void VW::copy_example_label (example *dst, example *src, size_t, void(*copy_label)(void *, void *))
 
void VW::copy_example_metadata (bool, example *dst, example *src)
 
void VW::copy_example_data (bool audit, example *dst, example *src)
 
void VW::copy_example_data (bool audit, example *dst, example *src, size_t label_size, void(*copy_label)(void *, void *))
 
void VW::move_feature_namespace (example *dst, example *src, namespace_index c)
 
void vec_store (features_and_source &p, float fx, uint64_t fi)
 
featureVW::get_features (vw &all, example *ec, size_t &feature_map_len)
 
void VW::return_features (feature *f)
 
void vec_ffs_store (full_features_and_source &p, float fx, uint64_t fi)
 
flat_exampleflatten_example (vw &all, example *ec)
 
flat_exampleflatten_sort_example (vw &all, example *ec)
 
void free_flatten_example (flat_example *fec)
 
exampleVW::alloc_examples (size_t, size_t count=1)
 
void VW::dealloc_example (void(*delete_label)(void *), example &ec, void(*delete_prediction)(void *))
 
void VW::finish_example (vw &, example &)
 
void VW::clean_example (vw &, example &, bool rewind)
 
void VW::finish_example (vw &all, multi_ex &ec_seq)
 
void VW::return_multiple_example (vw &all, v_array< example *> &examples)
 

Function Documentation

◆ collision_cleanup()

float collision_cleanup ( features fs)

Definition at line 11 of file example.cc.

References features::begin(), f, features_value_index_iterator::index(), and features_value_iterator::value().

Referenced by flatten_sort_example().

12 {
13  uint64_t last_index = (uint64_t)-1;
14  float sum_sq = 0.f;
15  features::iterator pos = fs.begin();
16  for (features::iterator& f : fs)
17  {
18  if (last_index == f.index())
19  pos.value() += f.value();
20  else
21  {
22  sum_sq += pos.value() * pos.value();
23  ++pos;
24  pos.value() = f.value();
25  pos.index() = f.index();
26  last_index = f.index();
27  }
28  }
29 
30  sum_sq += pos.value() * pos.value();
31  fs.sum_feat_sq = sum_sq;
32  ++pos;
33  fs.truncate_to(pos);
34 
35  return sum_sq;
36 }
iterator begin()
iterator over values and indicies
float f
Definition: cache.cc:40
feature_value & value()
Definition: feature_group.h:71

◆ flatten_example()

flat_example* flatten_example ( vw all,
example ec 
)

Definition at line 152 of file example.cc.

References v_array< T >::begin(), example::example_counter, flat_example::example_counter, flat_example::fs, full_features_and_source::fs, example_predict::ft_offset, flat_example::ft_offset, example::l, flat_example::l, full_features_and_source::mask, parameters::mask(), parameters::not_null(), example::num_features, flat_example::num_features, polylabel::simple, v_array< T >::size(), full_features_and_source::stride_shift, parameters::stride_shift(), example::tag, flat_example::tag, flat_example::tag_len, label_data::weight, example::weight, and vw::weights.

Referenced by flatten_sort_example().

153 {
154  flat_example& fec = calloc_or_throw<flat_example>();
155  fec.l = ec->l;
156  fec.l.simple.weight = ec->weight;
157 
158  fec.tag_len = ec->tag.size();
159  if (fec.tag_len > 0)
160  {
161  fec.tag = calloc_or_throw<char>(fec.tag_len + 1);
162  memcpy(fec.tag, ec->tag.begin(), fec.tag_len);
163  }
164 
166  fec.ft_offset = ec->ft_offset;
167  fec.num_features = ec->num_features;
168 
170  ffs.stride_shift = all.weights.stride_shift();
171  if (all.weights.not_null()) // TODO:temporary fix. all.weights is not initialized at this point in some cases.
172  ffs.mask = (uint64_t)all.weights.mask() >> all.weights.stride_shift();
173  else
174  ffs.mask = (uint64_t)LONG_MAX >> all.weights.stride_shift();
175  GD::foreach_feature<full_features_and_source, uint64_t, vec_ffs_store>(all, *ec, ffs);
176 
177  fec.fs = ffs.fs;
178 
179  return &fec;
180 }
v_array< char > tag
Definition: example.h:63
size_t example_counter
Definition: example.h:64
parameters weights
Definition: global_data.h:537
float weight
Definition: simple_label.h:15
label_data simple
Definition: example.h:28
polylabel l
Definition: example.h:86
features fs
Definition: example.h:97
T *& begin()
Definition: v_array.h:42
size_t size() const
Definition: v_array.h:68
char * tag
Definition: example.h:89
size_t num_features
Definition: example.h:67
uint64_t ft_offset
Definition: example.h:92
size_t tag_len
Definition: example.h:88
polylabel l
Definition: example.h:57
size_t num_features
Definition: example.h:95
size_t example_counter
Definition: example.h:91
uint32_t stride_shift()
float weight
Definition: example.h:62
uint64_t mask()

◆ flatten_sort_example()

flat_example* flatten_sort_example ( vw all,
example ec 
)

Definition at line 182 of file example.cc.

References collision_cleanup(), flatten_example(), flat_example::fs, vw::parse_mask, features::sort(), and flat_example::total_sum_feat_sq.

Referenced by learn(), memory_tree_ns::normalized_linear_prod(), and predict().

183 {
184  flat_example* fec = flatten_example(all, ec);
185  fec->fs.sort(all.parse_mask);
187  return fec;
188 }
float total_sum_feat_sq
Definition: example.h:96
features fs
Definition: example.h:97
float collision_cleanup(features &fs)
Definition: example.cc:11
bool sort(uint64_t parse_mask)
flat_example * flatten_example(vw &all, example *ec)
Definition: example.cc:152
uint64_t parse_mask
Definition: global_data.h:453

◆ free_flatten_example()

void free_flatten_example ( flat_example fec)

Definition at line 190 of file example.cc.

References features::delete_v(), flat_example::fs, flat_example::tag, and flat_example::tag_len.

Referenced by memory_tree_ns::normalized_linear_prod(), and svm_example::~svm_example().

191 {
192  // note: The label memory should be freed by by freeing the original example.
193  if (fec)
194  {
195  fec->fs.delete_v();
196  if (fec->tag_len > 0)
197  free(fec->tag);
198  free(fec);
199  }
200 }
void delete_v()
features fs
Definition: example.h:97
char * tag
Definition: example.h:89
size_t tag_len
Definition: example.h:88

◆ vec_ffs_store()

void vec_ffs_store ( full_features_and_source p,
float  fx,
uint64_t  fi 
)

Definition at line 147 of file example.cc.

References full_features_and_source::fs, full_features_and_source::mask, features::push_back(), and full_features_and_source::stride_shift.

148 {
149  p.fs.push_back(fx, (uint64_t)(fi >> p.stride_shift) & p.mask);
150 }
void push_back(feature_value v, feature_index i)

◆ vec_store()

void vec_store ( features_and_source p,
float  fx,
uint64_t  fi 
)

Definition at line 118 of file example.cc.

References features_and_source::feature_map, features_and_source::mask, v_array< T >::push_back(), and features_and_source::stride_shift.

119 {
120  p.feature_map.push_back(feature(fx, (uint64_t)(fi >> p.stride_shift) & p.mask));
121 }
v_array< feature > feature_map
Definition: example.cc:113
uint32_t stride_shift
Definition: example.cc:114
void push_back(const T &new_ele)
Definition: v_array.h:107