From 20c432a4893b6fc6d1b5f8e1f38346918dad9208 Mon Sep 17 00:00:00 2001 From: Heiko Strathmann Date: Thu, 8 Feb 2018 12:12:36 +0000 Subject: [PATCH] register kernel as CKernel* to make put work in cpp --- examples/meta/src/meta_api/kwargs.sg | 15 ++++++++++++++- src/shogun/base/SGObject.h | 13 +------------ src/shogun/machine/KernelMachine.cpp | 6 +++++- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/examples/meta/src/meta_api/kwargs.sg b/examples/meta/src/meta_api/kwargs.sg index e26f9abe0bc..7f1351630f6 100644 --- a/examples/meta/src/meta_api/kwargs.sg +++ b/examples/meta/src/meta_api/kwargs.sg @@ -26,10 +26,23 @@ # KernelMachine svm2 = kernel_machine("LibSVM", kernel=kernel("GaussianKernel")) - # Real example # ------------ +RealMatrix matrix(1,2) +matrix[0,0] = 0.0 +matrix[0,1] = 0.1 + +RealFeatures features() +features.put("feature_matrix", matrix) + +RealVector vector(2) +vector[0] = 0.0 +vector[1] = 0.1 + +RegressionLabels labels() +labels.put("labels", vector) + Kernel k = kernel("GaussianKernel", log_width=2.0) KernelMachine svm = kernel_machine("LibSVM", C1=1.1, kernel=k) diff --git a/src/shogun/base/SGObject.h b/src/shogun/base/SGObject.h index 10c23113de7..ab630226e47 100644 --- a/src/shogun/base/SGObject.h +++ b/src/shogun/base/SGObject.h @@ -364,24 +364,13 @@ class CSGObject } } -#ifndef SWIG - template ::value>* = nullptr> - [[deprecated ("SGObject parameters should be registered as a base class.")]] - void put(const std::string& name, const T value) - { - CSGObject* v = value; - Tag tag(name); - put(tag, v); - } -#endif - /** Setter for a class parameter, identified by a name. * Throws an exception if the class does not have such a parameter. * * @param name name of the parameter * @param value value of the parameter along with type information */ - template::value>> + template void put(const std::string& name, const T value) throw(ShogunException) { Tag tag(name); diff --git a/src/shogun/machine/KernelMachine.cpp b/src/shogun/machine/KernelMachine.cpp index b8a597b7e5e..a76ddbae6e9 100644 --- a/src/shogun/machine/KernelMachine.cpp +++ b/src/shogun/machine/KernelMachine.cpp @@ -634,7 +634,11 @@ void CKernelMachine::init() use_linadd=true; use_bias=true; - SG_ADD((CSGObject**) &kernel, "kernel", "", MS_AVAILABLE); + // SG_ADD((CSGObject**) &kernel, "kernel", "", MS_AVAILABLE); + m_parameters->add((CSGObject**)&kernel, "kernel", ""); + watch_param( + "kernel", &kernel, + AnyParameterProperties("", MS_NOT_AVAILABLE, GRADIENT_NOT_AVAILABLE)); SG_ADD((CSGObject**) &m_custom_kernel, "custom_kernel", "Custom kernel for" " data lock", MS_NOT_AVAILABLE); SG_ADD((CSGObject**) &m_kernel_backup, "kernel_backup",