This file is indexed.

/usr/include/shogun/classifier/mkl/MKLMulticlassGradient.h is in libshogun-dev 3.2.0-7.5.

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
132
133
134
135
136
137
138
139
140
141
142
143
/*
 * 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) 2009 Alexander Binder
 * Copyright (C) 2009 Fraunhofer Institute FIRST and Max-Planck-Society
 *
 * Update to patch 0.10.0 - thanks to Eric aka Yoo (thereisnoknife@gmail.com)
 *
 */

#ifndef MKLMulticlassGRADIENT_H_
#define MKLMulticlassGRADIENT_H_

#include <vector>
#include <cmath>
#include <cassert>
#include <shogun/base/SGObject.h>
#include <shogun/classifier/mkl/MKLMulticlassOptimizationBase.h>


namespace shogun
{
/** @brief MKLMulticlassGradient is a helper class for MKLMulticlass.
 *
 *	it solves the corresponding linear problem arising in SIP formulation for
 *	MKL using a gradient based approach
 */
class MKLMulticlassGradient: public MKLMulticlassOptimizationBase
{
public:
	/** Class default Constructor
	 *
	 */
   MKLMulticlassGradient();
	/** Class default Destructor
	 *
	 */
   virtual ~MKLMulticlassGradient();

	/** Class Copy Constructor
	 *
	 */
   MKLMulticlassGradient(MKLMulticlassGradient & gl);

	/** Class Assignment operator
	 *
	 */
   MKLMulticlassGradient operator=(MKLMulticlassGradient & gl);

	/** initializes solver
	 *
	 * @param numkernels2 is the number of kernels
	 *
	 *
	 */
	virtual void setup(const int32_t numkernels2);

	/** adds a constraint to the LP arising in L1 MKL based on two parameters
	 *
	 * @param normw2 is the vector of \f$ \|w_k \|^2 \f$ for all kernels
	 * @param sumofpositivealphas is a term depending on alphas, labels and
	 * biases, see in the function float64_t getsumofsignfreealphas() from
    * MKLMulticlass.h, it depends on the formulation of the underlying GMNPSVM.
	 *
	 */
	virtual void addconstraint(const ::std::vector<float64_t> & normw2,
			const float64_t sumofpositivealphas);

	/** computes MKL weights
	 *
	 * @param weights2 stores the new weights
	 *
	 */
	virtual void computeweights(std::vector<float64_t> & weights2);

	/** @return object name */
	virtual const char* get_name() const { return "MKLMulticlassGradient"; }

	/** sets p-norm parameter for MKL
	*	 @param norm the MKL norm
	*/
	virtual void set_mkl_norm(float64_t norm);

protected:
	/** helper routine for MKL optimization, performs linesearch
	*
	*	@param oldweights - MKL weights to start from
	*	@param finalbeta - new MKL weights
	*
	*/
	void linesearch2(std::vector<float64_t> & finalbeta,const std::vector<float64_t> & oldweights);

	/** helper routine for MKL optimization, computes form manifold coordinates the point on the manifold
	*
	*	@param gammas  - manifold coordinates
	*	@param weights - the point on the manifold
	*
	*/
	void genbetas( ::std::vector<float64_t> & weights ,const ::std::vector<float64_t> & gammas);

	/** helper routine for MKL optimization, computes greadient of manifold parametrization for one coordinate
	*
	*	@param gammagradient  - gradient
	*	@param gammas  - manifold coordinates
	*	@param dim - the coordinate for which thegradient is to be computed
	*
	*/
	void gengammagradient( ::std::vector<float64_t> & gammagradient ,const ::std::vector<float64_t> & gammas,const int32_t dim);

	/** helper routine for MKL optimization, computes optimization objective for one contraint
	*
	*	@param weights - MKL weights
	*	@param index - index of constraint
	*
	*/
	float64_t objectives(const ::std::vector<float64_t> & weights, const int32_t index);

	/** helper routine for MKL optimization, performs linesearch
	*
	*	@param oldweights - MKL weights to start from
	*	@param finalbeta - new MKL weights
	*
	*/
	void linesearch(std::vector<float64_t> & finalbeta,const std::vector<float64_t> & oldweights);

protected:
	/** stores the number of kernels which acts as a parameter for the LP */
	int32_t numkernels;


	/** stores normsofsubkernels which is a constraint, normsofsubkernels[i] belongs to the i-th constraint */
	::std::vector< ::std::vector<float64_t> > normsofsubkernels;
	/** stores the bias type term of constraints, sumsofalphas[i] belongs to the i-th constraint  */
	::std::vector< float64_t > sumsofalphas ;
	/** stores the L^p norm which acts as a parameter for the LP */
	float64_t pnorm;
};
}

#endif