jubatus_core  0.1.2
Jubatus: Online machine learning framework for distributed environment
Public Types | Public Member Functions | Private Attributes | List of all members
jubatus::core::framework::linear_function_mixer Class Reference

#include <linear_function_mixer.hpp>

Inheritance diagram for jubatus::core::framework::linear_function_mixer:
Inheritance graph
Collaboration diagram for jubatus::core::framework::linear_function_mixer:
Collaboration graph

Public Types

typedef jubatus::util::lang::shared_ptr< model_typemodel_ptr
 
typedef storage::storage_base model_type
 

Public Member Functions

diff_object convert_diff_object (const msgpack::object &) const
 
void get_diff (diffv &) const
 
void get_diff (packer &) const
 
model_ptr get_model () const
 
jubatus::util::lang::shared_ptr< unlearner::unlearner_baseget_unlearner () const
 
 linear_function_mixer (model_ptr model)
 
void mix (const diffv &lhs, diffv &mixed) const
 
void mix (const msgpack::object &obj, diff_object) const
 
bool put_diff (const diffv &v)
 
bool put_diff (const diff_object &obj)
 
void set_label_unlearner (jubatus::util::lang::shared_ptr< unlearner::unlearner_base > label_unlearner)
 
- Public Member Functions inherited from jubatus::core::framework::linear_mixable
 linear_mixable ()
 
virtual ~linear_mixable ()
 
- Public Member Functions inherited from jubatus::core::framework::mixable
virtual storage::version get_version () const
 
 mixable ()
 
 mixable (const std::string &name)
 
virtual std::set< std::string > mixables () const
 
virtual ~mixable ()
 

Private Attributes

jubatus::util::lang::shared_ptr< unlearner::unlearner_baselabel_unlearner_
 
model_ptr model_
 

Additional Inherited Members

- Protected Attributes inherited from jubatus::core::framework::mixable
std::set< std::string > mixables_
 

Detailed Description

Definition at line 33 of file linear_function_mixer.hpp.

Member Typedef Documentation

Definition at line 36 of file linear_function_mixer.hpp.

Definition at line 35 of file linear_function_mixer.hpp.

Constructor & Destructor Documentation

jubatus::core::framework::linear_function_mixer::linear_function_mixer ( model_ptr  model)
inlineexplicit

Definition at line 38 of file linear_function_mixer.hpp.

References JUBATUS_EXCEPTION.

39  : model_(model) {
40  if (!model) {
41  throw JUBATUS_EXCEPTION(common::config_not_set());
42  }
43  }
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79

Member Function Documentation

diff_object jubatus::core::framework::linear_function_mixer::convert_diff_object ( const msgpack::object &  obj) const
virtual

Implements jubatus::core::framework::linear_mixable.

Definition at line 123 of file linear_function_mixer.cpp.

124  {
125  internal_diff_object* diff = new internal_diff_object;
126  diff_object diff_obj(diff);
127  obj.convert(&diff->diff_);
128  return diff_obj;
129 }
jubatus::util::lang::shared_ptr< diff_object_raw > diff_object
void jubatus::core::framework::linear_function_mixer::get_diff ( diffv diff) const

Definition at line 82 of file linear_function_mixer.cpp.

References jubatus::core::framework::diffv::count, get_model(), and jubatus::core::framework::diffv::v.

Referenced by get_diff().

82  {
83  diff.count = 1; // TODO(kuenishi) mixer_->get_count();
84  get_model()->get_diff(diff.v);
85 }

Here is the call graph for this function:

Here is the caller graph for this function:

void jubatus::core::framework::linear_function_mixer::get_diff ( packer pk) const
virtual

Implements jubatus::core::framework::linear_mixable.

Definition at line 145 of file linear_function_mixer.cpp.

References get_diff().

145  {
146  diffv diff;
147  get_diff(diff);
148  pk.pack(diff);
149 }

Here is the call graph for this function:

model_ptr jubatus::core::framework::linear_function_mixer::get_model ( ) const
inline

Definition at line 51 of file linear_function_mixer.hpp.

References model_.

Referenced by get_diff(), and put_diff().

Here is the caller graph for this function:

jubatus::util::lang::shared_ptr<unlearner::unlearner_base> jubatus::core::framework::linear_function_mixer::get_unlearner ( ) const
inline

Definition at line 66 of file linear_function_mixer.hpp.

References label_unlearner_.

66  {
67  return label_unlearner_;
68  }
jubatus::util::lang::shared_ptr< unlearner::unlearner_base > label_unlearner_
void jubatus::core::framework::linear_function_mixer::mix ( const diffv lhs,
diffv mixed 
) const

Definition at line 67 of file linear_function_mixer.cpp.

References jubatus::core::storage::detail::binop(), jubatus::core::framework::diffv::count, jubatus::core::storage::diff_t::diff, jubatus::core::storage::diff_t::expect_version, and jubatus::core::framework::diffv::v.

Referenced by mix().

67  {
68  if (lhs.v.expect_version == mixed.v.expect_version) {
69  features3_t l(lhs.v.diff);
70  const features3_t& r(mixed.v.diff);
72  l,
73  r,
74  bind(mix_feature, lhs.count, mixed.count, _1, _2));
75  mixed.v.diff.swap(l);
76  mixed.count = lhs.count + mixed.count;
77  } else if (lhs.v.expect_version > mixed.v.expect_version) {
78  mixed = lhs;
79  }
80 }
std::vector< std::pair< std::string, feature_val3_t > > features3_t
std::vector< std::pair< std::string, E > > & binop(std::vector< std::pair< std::string, E > > &lhs, std::vector< std::pair< std::string, E > > rhs, F f, E default_value=E())

Here is the call graph for this function:

Here is the caller graph for this function:

void jubatus::core::framework::linear_function_mixer::mix ( const msgpack::object &  obj,
diff_object  ptr 
) const
virtual

Implements jubatus::core::framework::linear_mixable.

Definition at line 131 of file linear_function_mixer.cpp.

References JUBATUS_EXCEPTION, and mix().

133  {
134  diffv diff;
135  internal_diff_object* diff_obj =
136  dynamic_cast<internal_diff_object*>(ptr.get());
137  if (!diff_obj) {
138  throw JUBATUS_EXCEPTION(
139  core::common::exception::runtime_error("bad diff_object"));
140  }
141  obj.convert(&diff);
142  mix(diff, diff_obj->diff_);
143 }
void mix(const diffv &lhs, diffv &mixed) const
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79

Here is the call graph for this function:

bool jubatus::core::framework::linear_function_mixer::put_diff ( const diffv v)

Definition at line 87 of file linear_function_mixer.cpp.

References jubatus::core::storage::diff_t::diff, jubatus::core::storage::diff_t::expect_version, get_model(), label_unlearner_, jubatus::core::clustering::swap(), and jubatus::core::framework::diffv::v.

Referenced by put_diff().

87  {
88  if (label_unlearner_) {
89  for (size_t i = 0; i < v.v.diff.size(); ++i) {
90  const feature_val3_t& classes = v.v.diff[i].second;
91  for (size_t j = 0; j < classes.size(); ++j) {
92  // ignore error returned by touch
93  label_unlearner_->touch(classes[j].first);
94  }
95  }
96 
97  features3_t parameters(v.v.diff.size());
98  for (size_t i = 0; i < v.v.diff.size(); ++i) {
99  parameters[i].first = v.v.diff[i].first;
100 
101  // Copy weights of classes except unlearned classes.
102  const feature_val3_t& source_classes = v.v.diff[i].second;
103  feature_val3_t& target_classes = parameters[i].second;
104 
105  target_classes.reserve(source_classes.size());
106  for (size_t j = 0; j < source_classes.size(); ++j) {
107  if (label_unlearner_->exists_in_memory(source_classes[j].first)) {
108  target_classes.push_back(source_classes[j]);
109  }
110  }
111  }
112 
113  storage::diff_t unlearned_diff;
114  std::swap(unlearned_diff.diff, parameters);
115  unlearned_diff.expect_version = v.v.expect_version;
116 
117  return get_model()->set_average_and_clear_diff(unlearned_diff);
118  } else {
119  return get_model()->set_average_and_clear_diff(v.v);
120  }
121 }
std::vector< std::pair< std::string, feature_val3_t > > features3_t
void swap(weighted_point &p1, weighted_point &p2)
Definition: types.hpp:47
std::vector< std::pair< std::string, wplist > > diff_t
Definition: types.hpp:57
std::vector< T > v(size)
std::vector< std::pair< std::string, val3_t > > feature_val3_t
jubatus::util::lang::shared_ptr< unlearner::unlearner_base > label_unlearner_

Here is the call graph for this function:

Here is the caller graph for this function:

bool jubatus::core::framework::linear_function_mixer::put_diff ( const diff_object obj)
virtual

Implements jubatus::core::framework::linear_mixable.

Definition at line 151 of file linear_function_mixer.cpp.

References JUBATUS_EXCEPTION, and put_diff().

151  {
152  internal_diff_object* diff_obj =
153  dynamic_cast<internal_diff_object*>(ptr.get());
154  if (!diff_obj) {
155  throw JUBATUS_EXCEPTION(
156  core::common::exception::runtime_error("bad diff_object"));
157  }
158  return put_diff(diff_obj->diff_);
159 }
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79

Here is the call graph for this function:

void jubatus::core::framework::linear_function_mixer::set_label_unlearner ( jubatus::util::lang::shared_ptr< unlearner::unlearner_base label_unlearner)
inline

Definition at line 45 of file linear_function_mixer.hpp.

References label_unlearner_.

Referenced by jubatus::core::classifier::linear_classifier::set_label_unlearner().

47  {
48  label_unlearner_ = label_unlearner;
49  }
jubatus::util::lang::shared_ptr< unlearner::unlearner_base > label_unlearner_

Here is the caller graph for this function:

Member Data Documentation

jubatus::util::lang::shared_ptr<unlearner::unlearner_base> jubatus::core::framework::linear_function_mixer::label_unlearner_
private

Definition at line 72 of file linear_function_mixer.hpp.

Referenced by get_unlearner(), put_diff(), and set_label_unlearner().

model_ptr jubatus::core::framework::linear_function_mixer::model_
private

Definition at line 71 of file linear_function_mixer.hpp.

Referenced by get_model().


The documentation for this class was generated from the following files: