Package mklab.JGNN.core.util
Interface Loss
public interface Loss
Provides computation and (partial) derivation of popular activation functions
and cross-entropy loss functions.
- Author:
- Emmanouil Krasanakis
-
Method Summary
Modifier and TypeMethodDescriptionstatic double
crossEntropy
(double output, double label) A cross entropy loss for one sample computes as -label*log(output) -(1-label)*log(1-output).static double
crossEntropyDerivative
(double output, double label) The derivative of thecrossEntropy(double, double)
loss.static double
crossEntropyDerivativeCategorical
(double output, double label) The derivative of the#crossEntropyCategorical(double, double)
loss.static double
crossEntropySigmoidDerivative
(double x, double label) The derivative ofcrossEntropy(sigmoid(x), label)
with respect to x.static double
crossEntropyTanhDerivative
(double x, double label) The derivative ofcrossEntropy(tanh(x), label)
with respect to x.static double
relu
(double x) The relu activation x if x > 0, 0 otherwisestatic Tensor
Appliesrelu(double)
element-by-element.static double
reluDerivative
(double x) The derivative of therelu(double)
function.static Tensor
AppliesreluDerivative(double)
function.static double
sigmoid
(double x) The sigmoid function 1/(1+exp(-x)).static Tensor
Appliessigmoid(double)
element-by-element.static double
sigmoidDerivative
(double x) The derivative of thesigmoid(double)
function.static Tensor
AppliessigmoidDerivative(double)
function.static double
tanh
(double x) The tanh activation (exp(x)-exp(-x))/(exp(x)+exp(-x))static Tensor
Appliestanh(double)
element-by-element.static double
tanhDerivative
(double x) The derivative of thetanh(double)
function.static Tensor
AppliestanhDerivative(double)
function.
-
Method Details
-
sigmoid
static double sigmoid(double x) The sigmoid function 1/(1+exp(-x)).- Parameters:
x
- The activation of the sigmoid function.- Returns:
- The sigmoid value.
- See Also:
-
tanh
static double tanh(double x) The tanh activation (exp(x)-exp(-x))/(exp(x)+exp(-x))- Parameters:
x
- The activation of the tanh function.- Returns:
- The tanh value.
- See Also:
-
relu
static double relu(double x) The relu activation x if x > 0, 0 otherwise- Parameters:
x
- The activation of the relu function.- Returns:
- The relu value.
- See Also:
-
sigmoidDerivative
static double sigmoidDerivative(double x) The derivative of thesigmoid(double)
function.- Parameters:
x
- The activation of the sigmoid function.- Returns:
- The sigmoid derivative's value.
- See Also:
-
tanhDerivative
static double tanhDerivative(double x) The derivative of thetanh(double)
function.- Parameters:
x
- The activation of the tanh function.- Returns:
- The tanh derivative's value.
- See Also:
-
reluDerivative
static double reluDerivative(double x) The derivative of therelu(double)
function.- Parameters:
x
- The activation of the relu function.- Returns:
- The relu derivative's value.
- See Also:
-
crossEntropy
static double crossEntropy(double output, double label) A cross entropy loss for one sample computes as -label*log(output) -(1-label)*log(1-output). To avoid producing invalid values, an eps of 1.E-12 is used to constraint the cross entropy in the range [-12, 12].- Parameters:
output
- The output of a prediction task. Should lie in the range [0,1]label
- The desired label of the prediction task. Should assume binary values 0 or 1- Returns:
- The cross entropy value.
- Throws:
IllegalArgumentException
- If outputs out of the range [0,1] or labels are non-binary.
-
crossEntropyDerivative
static double crossEntropyDerivative(double output, double label) The derivative of thecrossEntropy(double, double)
loss. To avoid producing invalid values, an eps of 1.E-12 is used to constraint the cross entropy in the range [-12, 12], which results to this derivative being constrained in the range [-1.E12, 1.E12].- Parameters:
output
- The output of a prediction task. Should lie in the range [0,1]label
- The desired label of the prediction task. Should assume binary values 0 or 1- Returns:
- The cross entropy derivative's value.
- Throws:
IllegalArgumentException
- If outputs out of the range [0,1] or labels are non-binary.
-
crossEntropyDerivativeCategorical
static double crossEntropyDerivativeCategorical(double output, double label) The derivative of the#crossEntropyCategorical(double, double)
loss. To avoid producing invalid values, an eps of 1.E-12 is used to constraint the cross entropy in the range [-12, 12], which results to this derivative being constrained in the range [-1.E12, 1.E12].- Parameters:
output
- The output of a prediction task. Should lie in the range [0,1]label
- The desired label of the prediction task. Should assume binary values 0 or 1- Returns:
- The cross entropy derivative's value.
- Throws:
IllegalArgumentException
- If outputs out of the range [0,1] or labels are non-binary.
-
crossEntropySigmoidDerivative
static double crossEntropySigmoidDerivative(double x, double label) The derivative ofcrossEntropy(sigmoid(x), label)
with respect to x. This function can avoid using an eps and is hence more precise than the expressioncrossEntropyDerivative(sigmoid(x), label)*sigmoidDerivative(x)
.- Parameters:
x
- The activation of the sigmoid function.label
- The desired label of the prediction task. Should assume binary values 0 or 1- Returns:
- The cross entropy partial derivative with respect to the activation passed to an intermediate sigmoid transformation.
- Throws:
IllegalArgumentException
- If labels are non-binary.
-
crossEntropyTanhDerivative
static double crossEntropyTanhDerivative(double x, double label) The derivative ofcrossEntropy(tanh(x), label)
with respect to x. This function calculatescrossEntropyDerivative(tanh(x), label)*tanhDerivative(x)
.- Parameters:
x
- The activation of the tanh function.label
- The desired label of the prediction task. Should assume binary values 0 or 1- Returns:
- The cross entropy partial derivative with respect to the activation passed to an intermediate tanh transformation.
-
sigmoid
Appliessigmoid(double)
element-by-element.- Parameters:
x
- The activation tensor of the sigmoid function.- Returns:
- The tensor of sigmoid values.
-
tanh
Appliestanh(double)
element-by-element.- Parameters:
x
- The activation tensor of the tanh function.- Returns:
- The tensor of tanh values.
-
relu
Appliesrelu(double)
element-by-element.- Parameters:
x
- The activation tensor of the relu function.- Returns:
- The tensor of relu values.
-
sigmoidDerivative
AppliessigmoidDerivative(double)
function.- Parameters:
x
- The activation tensor of the sigmoid function.- Returns:
- The tensor of sigmoid derivative values.
-
tanhDerivative
AppliestanhDerivative(double)
function.- Parameters:
x
- The activation tensor of the tanh function.- Returns:
- The tensor of tanh derivative values.
-
reluDerivative
AppliesreluDerivative(double)
function.- Parameters:
x
- The activation tensor of the relu function.- Returns:
- The tensor of relu derivative values.
-