/
EmbeddingConverter.cpp
84 lines (71 loc) · 1.65 KB
/
EmbeddingConverter.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
* This software is distributed under BSD 3-clause license (see LICENSE file).
*
* Authors: Sergey Lisitsyn, Evan Shelhamer, Thoralf Klein, Soeren Sonnenburg,
* Chiyuan Zhang
*/
#include <shogun/converter/EmbeddingConverter.h>
#include <shogun/kernel/LinearKernel.h>
#include <shogun/distance/EuclideanDistance.h>
using namespace shogun;
namespace shogun
{
CEmbeddingConverter::CEmbeddingConverter()
: CConverter()
{
m_target_dim = 1;
m_distance = new CEuclideanDistance();
m_kernel = new CLinearKernel();
init();
}
CEmbeddingConverter::~CEmbeddingConverter()
{
SG_UNREF(m_distance);
SG_UNREF(m_kernel);
}
CDenseFeatures<float64_t>* CEmbeddingConverter::embed(CFeatures* features)
{
return (CDenseFeatures<float64_t>*)apply(features);
}
void CEmbeddingConverter::set_target_dim(int32_t dim)
{
ASSERT(dim>0)
m_target_dim = dim;
}
int32_t CEmbeddingConverter::get_target_dim() const
{
return m_target_dim;
}
void CEmbeddingConverter::set_distance(CDistance* distance)
{
SG_REF(distance);
SG_UNREF(m_distance);
m_distance = distance;
}
CDistance* CEmbeddingConverter::get_distance() const
{
SG_REF(m_distance);
return m_distance;
}
void CEmbeddingConverter::set_kernel(CKernel* kernel)
{
SG_REF(kernel);
SG_UNREF(m_kernel);
m_kernel = kernel;
}
CKernel* CEmbeddingConverter::get_kernel() const
{
SG_REF(m_kernel);
return m_kernel;
}
void CEmbeddingConverter::init()
{
SG_ADD(&m_target_dim, "target_dim",
"target dimensionality of preprocessor", MS_AVAILABLE);
SG_ADD(
&m_distance, "distance", "distance to be used for embedding",
MS_AVAILABLE);
SG_ADD(
&m_kernel, "kernel", "kernel to be used for embedding", MS_AVAILABLE);
}
}