/usr/include/shogun/kernel/DistanceKernel.h is in libshogun-dev 3.1.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | /*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* Written (W) 2007-2009 Christian Gehl
* Copyright (C) 2007-2009 Fraunhofer Institute FIRST and Max-Planck-Society
*/
#include <shogun/lib/config.h>
#ifndef _DISTANCEKERNEL_H___
#define _DISTANCEKERNEL_H___
#include <shogun/lib/common.h>
#include <shogun/kernel/Kernel.h>
#include <shogun/distance/Distance.h>
namespace shogun
{
class CDistance;
/** @brief The Distance kernel takes a distance as input.
*
* It turns a distance into something kernel like by computing
*
* \f[
* k({\bf x}, {\bf x'}) = e^{-\frac{dist({\bf x}, {\bf x'})}{width}}
* \f]
*/
class CDistanceKernel: public CKernel
{
public:
/** default constructor */
CDistanceKernel();
/** constructor
*
* @param cache cache size
* @param width width
* @param dist distance
*/
CDistanceKernel(int32_t cache, float64_t width, CDistance* dist);
/** constructor
*
* @param l features of left-hand side
* @param r features of right-hand side
* @param width width
* @param dist distance
*/
CDistanceKernel(
CFeatures *l, CFeatures *r, float64_t width, CDistance* dist);
virtual ~CDistanceKernel();
/** initialize kernel
*
* @param l features of left-hand side
* @param r features of right-hand side
* @return if initializing was successful
*/
virtual bool init(CFeatures* l, CFeatures* r);
/** register the parameters (serialization support)
*
*/
virtual void register_params();
/** return what type of kernel we are
*
* @return kernel type DISTANCE
*/
virtual EKernelType get_kernel_type() { return K_DISTANCE; }
/** return feature type the kernel can deal with
*
* @return feature type of distance used
*/
virtual EFeatureType get_feature_type() { return distance->get_feature_type(); }
/** return feature class the kernel can deal with
*
* @return feature class of distance used
*/
virtual EFeatureClass get_feature_class() { return distance->get_feature_class(); }
/** return the kernel's name
*
* @return name Distance
*/
virtual const char* get_name() const { return "DistanceKernel"; }
/** set the kernel's width
*
* @param w kernel width
*/
virtual void set_width(float64_t w)
{
width=w;
}
/** return the kernel's width
*
* @return kernel width
*/
virtual float64_t get_width() const
{
return width;
}
protected:
/** compute kernel function for features a and b
* idx_{a,b} denote the index of the feature vectors
* in the corresponding feature object
*
* @param idx_a index a
* @param idx_b index b
* @return computed kernel function at indices a,b
*/
float64_t compute(int32_t idx_a, int32_t idx_b);
/** distance */
CDistance* distance;
/** width */
float64_t width;
};
}
#endif /* _DISTANCEKERNEL_H__ */
|