00001
00006 #include "kernel.h"
00007
00008 REGISTER_CREATOR2(lemga::kernel::Linear, k_lin);
00009 REGISTER_CREATOR2(lemga::kernel::Polynomial, k_pol);
00010 REGISTER_CREATOR2(lemga::kernel::Stump, k_stu);
00011 REGISTER_CREATOR2(lemga::kernel::Perceptron, k_per);
00012 REGISTER_CREATOR2(lemga::kernel::RBF, k_rbf);
00013 REGISTER_CREATOR2(lemga::kernel::Sigmoid, k_sig);
00014
00015 namespace lemga {
00016 namespace kernel {
00017
00018 bool Kernel::serialize (std::ostream& os, ver_list& vl) const {
00019 SERIALIZE_PARENT(Object, os, vl, 1);
00020 return os;
00021 }
00022
00023 bool Kernel::unserialize (std::istream& is, ver_list& vl, const id_t& d) {
00024 if (d != id() && d != NIL_ID) return false;
00025 UNSERIALIZE_PARENT(Object, is, vl, 1, v);
00026 assert(v > 0);
00027 return true;
00028 }
00029
00030 bool Polynomial::serialize (std::ostream& os, ver_list& vl) const {
00031 SERIALIZE_PARENT(Kernel, os, vl, 1);
00032 return (os << degree << ' ' << gamma << ' ' << coef0 << '\n');
00033 }
00034
00035 bool
00036 Polynomial::unserialize (std::istream& is, ver_list& vl, const id_t& d) {
00037 if (d != id() && d != NIL_ID) return false;
00038 UNSERIALIZE_PARENT(Kernel, is, vl, 1, v);
00039 assert(v > 0);
00040 return (is >> degree >> gamma >> coef0) && (gamma > 0);
00041 }
00042
00043 bool RBF::serialize (std::ostream& os, ver_list& vl) const {
00044 SERIALIZE_PARENT(Kernel, os, vl, 1);
00045 return (os << gamma << '\n');
00046 }
00047
00048 bool RBF::unserialize (std::istream& is, ver_list& vl, const id_t& d) {
00049 if (d != id() && d != NIL_ID) return false;
00050 UNSERIALIZE_PARENT(Kernel, is, vl, 1, v);
00051 assert(v > 0);
00052 return (is >> gamma) && (gamma > 0);
00053 }
00054
00055 bool Sigmoid::serialize (std::ostream& os, ver_list& vl) const {
00056 SERIALIZE_PARENT(Kernel, os, vl, 1);
00057 return (os << gamma << ' ' << coef0 << '\n');
00058 }
00059
00060 bool Sigmoid::unserialize (std::istream& is, ver_list& vl, const id_t& d) {
00061 if (d != id() && d != NIL_ID) return false;
00062 UNSERIALIZE_PARENT(Kernel, is, vl, 1, v);
00063 assert(v > 0);
00064 return (is >> gamma >> coef0) && (gamma > 0);
00065 }
00066
00067 }}