blob: 0f20c906db5e58471c50d2042e34b3c8576310cf [file] [log] [blame]
Wei Hua6b4eebc2012-03-09 10:24:16 -08001/*
2 * Copyright (C) 2012 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef LEARNING_JNI_STOCHASTIC_LINEAR_RANKER_H
18#define LEAENING_JNI_STOCHASTIC_LINEAR_RANKER_H
19
20#include <jni.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
saberianb019e892012-04-19 11:33:44 -070026/* Counts the number of learning iterations. */
27const char * ITR_NUM = "IterationNumber";
28
29/* The maximum norm of the weight vector. If norm of weights are larger than NormConstraint
30 they will be reprojected using RegularizationType to satisfy this constraint. */
31const char * NORM_CONSTRAINT = "NormConstraint";
32
33/* Ddetermines type of the regularization used in learning.
34 This regularization can be based on different norms.
35 Options: "L0", "L1", "L2", "L1L2", "L1LInf".
36 Default : LINEAR */
37const char * REG_TYPE = "RegularizationType";
38
39/* Lambda is a factor that is multiplied with the step size in learning. This can be used
40 to change the step size.
41 Default : 1.0 */
42const char * LAMBDA = "Lambda";
43
44/* This parameter determines the update type in learning process.
45 Options: "FULL_CS" , "CLIP_CS", "REG_CS", "SL", "ADAPTIVE_REG"
46 Default : "SL" */
47const char * UPDATE_TYPE = "UpdateType";
48
49/* Options: "CONST", "INV_LINEAR", "INV_QUADRATIC", "INV_SQRT"
50 Default: "INV_LINEAR". */
51const char * ADAPT_MODE = "AdaptationMode";
52
53/* Three differnt kernels are supported: Linear "LINEAR", Polynomial "POLY", and RBF "RBF"
54 Default : "LINEAR" */
55const char * KERNEL_TYPE = "KernelType";
56
57/* Kernel param is kernel-specific. In case of polynomial kernel, it is the degree of the
58 polynomial. In case of RBF kernel, it implies the sigma parameter. In case of linear
59 kernel, it is not used. */
60const char * KERNEL_PARAM = "KernelParameter";
61
62/* Kernel gain is typically a multiplicative factor to the dot product while calculating
63 the kernel function. In most use cases, gain should be set to 1.0. */
64const char * KERNEL_GAIN = "KernelGain";
65
66/* Kernel bias is typically an additive factors to the dot product while calculating
67 the kernel function. In most use cases, bias should be set to 0.0. */
68const char * KERNEL_BIAS = "KernelBias";
69
70/* This parameter determines the type of loss function to minimize.
71 Options : "PAIRWISE", "RECIPROCAL_RANK"
72 Default : "PAIRWISE" */
73const char * LOSS_TYPE = "LossType";
74
75/* The minimum percent of training pairs that are used in training.
76 Default : "0.1" */
77const char * ACC_PROB = "AcceptaceProbability";
78
79/* The code averages out gradient updates for MinimumBatchSize samples
80 before performing an iteration of the algorithm. */
81const char * MIN_BATCH_SIZE = "MinimumBatchSize";
82
83/* Specifies the number of non-zero entries allowed in a gradient.
84 Default is -1 which means we take the gradient as given by data without
85 adding any new constraints. positive number is treated as an L0 constraint */
86const char * GRAD_L0_NORM = "GradientL0Nrom";
87
88const char * REG_TYPE_L0 = "L0";
89const char * REG_TYPE_L1 = "L1";
90const char * REG_TYPE_L2 = "L2";
91const char * REG_TYPE_L1L2 = "L1L2";
92const char * REG_TYPE_L1LInf = "L1LInf";
93const char * UPDATE_TYPE_FULL_CS = "FULL_CS";
94const char * UPDATE_TYPE_CLIP_CS = "CLIP_CS";
95const char * UPDATE_TYPE_REG_CS = "REG_CS";
96const char * UPDATE_TYPE_SL = "SL";
97const char * UPDATE_TYPE_ADAPTIVE_REG = "ADAPTIVE_REG";
98const char * ADAPT_MODE_CONST = "CONST";
99const char * ADAPT_MODE_INV_LINEAR = "INV_LINEAR";
100const char * ADAPT_MODE_INV_QUADRATIC = "INV_QUADRATIC";
101const char * ADAPT_MODE_INV_SQRT = "INV_SQRT";
102const char * KERNEL_TYPE_LINEAR = "LINEAR";
103const char * KERNEL_TYPE_POLY = "POLY";
104const char * KERNEL_TYPE_RBF = "RBF";
105const char * LOSS_TYPE_PAIRWISE = "PAIRWISE";
106const char * LOSS_TYPE_RECIPROCAL_RANK = "RECIPROCAL_RANK";
107
Wei Hua6b4eebc2012-03-09 10:24:16 -0800108JNIEXPORT jint JNICALL
109Java_android_bordeaux_learning_StochasticLinearRanker_initNativeClassifier(
110 JNIEnv* env,
111 jobject thiz);
112
113
114JNIEXPORT jboolean JNICALL
115Java_android_bordeaux_learning_StochasticLinearRanker_deleteNativeClassifier(
116 JNIEnv* env,
117 jobject thiz,
118 jint paPtr);
119
120JNIEXPORT jboolean JNICALL
121Java_android_bordeaux_learning_StochasticLinearRanker_nativeUpdateClassifier(
122 JNIEnv* env,
123 jobject thiz,
124 jobjectArray key_array_positive,
125 jfloatArray value_array_positive,
126 jobjectArray key_array_negative,
127 jfloatArray value_array_negative,
128 jint paPtr);
129
130JNIEXPORT jfloat JNICALL
131Java_android_bordeaux_learning_StochasticLinearRanker_nativeScoreSample(
132 JNIEnv* env,
133 jobject thiz,
134 jobjectArray key_array,
135 jfloatArray value_array,
136 jint paPtr);
137
138JNIEXPORT void JNICALL
saberianb019e892012-04-19 11:33:44 -0700139Java_android_bordeaux_learning_StochasticLinearRanker_nativeGetWeightClassifier(
Wei Hua6b4eebc2012-03-09 10:24:16 -0800140 JNIEnv* env,
141 jobject thiz,
saberianb019e892012-04-19 11:33:44 -0700142 jobjectArray key_array_weight,
143 jfloatArray value_array_weight,
144 jfloat normalizer,
145 jint paPtr);
146
147JNIEXPORT void JNICALL
148Java_android_bordeaux_learning_StochasticLinearRanker_nativeGetParameterClassifier(
149 JNIEnv* env,
150 jobject thiz,
151 jobjectArray key_array_param,
152 jobjectArray value_array_param,
Wei Hua6b4eebc2012-03-09 10:24:16 -0800153 jint paPtr);
154
155JNIEXPORT jint JNICALL
156Java_android_bordeaux_learning_StochasticLinearRanker_nativeGetLengthClassifier(
157 JNIEnv* env,
158 jobject thiz,
159 jint paPtr);
160
161JNIEXPORT jboolean JNICALL
saberianb019e892012-04-19 11:33:44 -0700162Java_android_bordeaux_learning_StochasticLinearRanker_nativeSetWeightClassifier(
Wei Hua6b4eebc2012-03-09 10:24:16 -0800163 JNIEnv* env,
164 jobject thiz,
165 jobjectArray key_array_model,
166 jfloatArray value_array_model,
saberianb019e892012-04-19 11:33:44 -0700167 jfloat normalizer_model,
168 jint paPtr);
169
170JNIEXPORT jboolean JNICALL
171Java_android_bordeaux_learning_StochasticLinearRanker_nativeSetParameterClassifier(
172 JNIEnv* env,
173 jobject thiz,
174 jstring key,
175 jstring value,
Wei Hua6b4eebc2012-03-09 10:24:16 -0800176 jint paPtr);
177
178#ifdef __cplusplus
179}
180#endif
181
182#endif /* ANDROID_LERNING_JNI_STOCHASTIC_LINEAR_RANKER_H */