← Back
Editing: Stochastic.php
<?php namespace Rubix\ML\NeuralNet\Optimizers; use Tensor\Tensor; use Rubix\ML\NeuralNet\Parameter; use Rubix\ML\Exceptions\InvalidArgumentException; /** * Stochastic * * A constant learning rate gradient descent optimizer. * * @category Machine Learning * @package Rubix/ML * @author Andrew DalPino */ class Stochastic implements Optimizer { /** * The learning rate that controls the global step size. * * @var float */ protected float $rate; /** * @param float $rate * @throws InvalidArgumentException */ public function __construct(float $rate = 0.01) { if ($rate <= 0.0) { throw new InvalidArgumentException('Learning rate must' . " be greater than 0, $rate given."); } $this->rate = $rate; } /** * Take a step of gradient descent for a given parameter. * * @internal * * @param Parameter $param * @param Tensor<int|float|array> $gradient * @return Tensor<int|float|array> */ public function step(Parameter $param, Tensor $gradient) : Tensor { return $gradient->multiply($this->rate); } /** * Return the string representation of the object. * * @internal * * @return string */ public function __toString() : string { return "Stochastic (rate: {$this->rate})"; } }
Save File
Cancel