diff --git a/src/Phpml/NeuralNetwork/ActivationFunction/PReLU.php b/src/Phpml/NeuralNetwork/ActivationFunction/PReLU.php new file mode 100644 index 0000000..76674a0 --- /dev/null +++ b/src/Phpml/NeuralNetwork/ActivationFunction/PReLU.php @@ -0,0 +1,33 @@ +beta = $beta; + } + + /** + * @param float|int $value + * + * @return float + */ + public function compute($value): float + { + return $value >= 0 ? $value : $this->beta * $value; + } +} diff --git a/tests/Phpml/NeuralNetwork/ActivationFunction/PReLUTest.php b/tests/Phpml/NeuralNetwork/ActivationFunction/PReLUTest.php new file mode 100644 index 0000000..a390bf0 --- /dev/null +++ b/tests/Phpml/NeuralNetwork/ActivationFunction/PReLUTest.php @@ -0,0 +1,39 @@ +assertEquals($expected, $prelu->compute($value), '', 0.001); + } + + /** + * @return array + */ + public function preluProvider() + { + return [ + [0.01, 0.367, 0.367], + [0.0, 1, 1], + [0.3, -0.3, -1], + [0.9, 3, 3], + [0.02, -0.06, -3], + ]; + } +}