0
私はdlibライブラリの変更例を持っています。私はone_vs_one_trainer
を訓練し、派生した関数をシリアル化しようとしています。ここに私のコードの例です:Dlibで学習した関数をシリアライズできません
typedef matrix<double, 2, 1> SampleType;
typedef radial_basis_kernel<SampleType> Kernel;
typedef normalized_function<one_vs_one_decision_function<one_vs_one_trainer<any_trainer<SampleType>>>> LearnedFunction;
std::vector<double> labels;
std::vector<SampleType> samples;
for (int r = -20; r <= 20; ++r)
{
for (int c = -20; c <= 20; ++c)
{
SampleType samp(2);
samp(0) = r;
samp(1) = c;
samples.push_back(samp);
if (sqrt((double)r*r + c*c) <= 5)
labels.push_back(1.0);
else if (sqrt((double)r*r + c*c) <= 10)
labels.push_back(2.0);
else
labels.push_back(3.0);
}
}
vector_normalizer<SampleType> normalizer;
normalizer.train(samples);
for (auto& s : samples) {
s = normalizer(s);
}
one_vs_one_trainer<any_trainer<SampleType>> trainer;
krr_trainer<Kernel> rbf_trainer;
rbf_trainer.set_kernel(Kernel(0.1));
trainer.set_trainer(rbf_trainer);
LearnedFunction learnedFunction;
learnedFunction.normalizer = normalizer;
learnedFunction.function = trainer.train(samples, labels);
serialize("saved_function.dat") << learnedFunction;
しかし、最後の行でエラーが発生します:直列化が失敗した理由を
terminate called after throwing an instance of 'dlib::serialization_error'
what(): Can't serialize one_vs_one_decision_function. Not all decision functions defined.
while serializing an object of type one_vs_one_decision_function
while serializing object of type normalized_function
あなたは知っていますか?私はどんな助けにも感謝します。
これは例で説明しています:http://dlib.net/multiclass_classification_ex.cpp.html –