Skip to content
This repository was archived by the owner on Dec 6, 2023. It is now read-only.

Commit f0e74d5

Browse files
committed
ENH: expose loss functions in *.pxd file so it can be used by third party modules.
1 parent e1cdcaa commit f0e74d5

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

lightning/impl/sgd_fast.pxd

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,85 @@ cdef class LossFunction:
55

66
cpdef double loss(self, double p, double y)
77
cpdef double get_update(self, double p, double y)
8+
9+
10+
cdef class ModifiedHuber(LossFunction):
11+
12+
cpdef double loss(self, double p, double y)
13+
14+
cpdef double get_update(self, double p, double y)
15+
16+
17+
cdef class Hinge(LossFunction):
18+
19+
cdef double threshold
20+
21+
def __init__(self, double threshold=1.0)
22+
self.threshold = threshold
23+
24+
cpdef double loss(self, double p, double y)
25+
26+
cpdef double get_update(self, double p, double y)
27+
28+
29+
cdef class SmoothHinge(LossFunction):
30+
31+
cdef double gamma
32+
33+
def __init__(self, double gamma=1.0):
34+
self.gamma = gamma # the larger, the smoother
35+
36+
cpdef double loss(self, double p, double y)
37+
38+
cpdef double get_update(self, double p, double y)
39+
40+
41+
cdef class SquaredHinge(LossFunction):
42+
43+
cdef double threshold
44+
45+
def __init__(self, double threshold=1.0):
46+
self.threshold = threshold
47+
48+
cpdef double loss(self, double p, double y)
49+
50+
cpdef double get_update(self, double p, double y)
51+
52+
53+
cdef class Log(LossFunction):
54+
55+
cpdef double loss(self, double p, double y)
56+
57+
cpdef double get_update(self, double p, double y)
58+
59+
60+
cdef class SquaredLoss(LossFunction):
61+
62+
cpdef double loss(self, double p, double y)
63+
64+
cpdef double get_update(self, double p, double y)
65+
66+
67+
cdef class Huber(LossFunction):
68+
69+
cdef double c
70+
71+
def __init__(self, double c):
72+
self.c = c
73+
74+
cpdef double loss(self, double p, double y)
75+
76+
cpdef double get_update(self, double p, double y)
77+
78+
79+
cdef class EpsilonInsensitive(LossFunction):
80+
81+
cdef double epsilon
82+
83+
def __init__(self, double epsilon):
84+
self.epsilon = epsilon
85+
86+
cpdef double loss(self, double p, double y)
87+
88+
cpdef double get_update(self, double p, double y)
89+

0 commit comments

Comments
 (0)