cii-text-analysis/vendor/rubix/ml/tests/NeuralNet/Optimizers/CyclicalTest.php
Jéremy Munsch f68d2ac333
premier poc
2026-02-11 08:24:04 +01:00

79 lines
1.8 KiB
PHP

<?php
namespace Rubix\ML\Tests\NeuralNet\Optimizers;
use Tensor\Tensor;
use Tensor\Matrix;
use Rubix\ML\NeuralNet\Parameter;
use Rubix\ML\NeuralNet\Optimizers\Cyclical;
use Rubix\ML\NeuralNet\Optimizers\Optimizer;
use PHPUnit\Framework\TestCase;
use Generator;
/**
* @group Optimizers
* @covers \Rubix\ML\NeuralNet\Optimizers\Cyclical
*/
class CyclicalTest extends TestCase
{
/**
* @var \Rubix\ML\NeuralNet\Optimizers\Cyclical
*/
protected $optimizer;
/**
* @before
*/
protected function setUp() : void
{
$this->optimizer = new Cyclical(0.001, 0.006, 2000);
}
/**
* @test
*/
public function build() : void
{
$this->assertInstanceOf(Cyclical::class, $this->optimizer);
$this->assertInstanceOf(Optimizer::class, $this->optimizer);
}
/**
* @test
* @dataProvider stepProvider
*
* @param \Rubix\ML\NeuralNet\Parameter $param
* @param \Tensor\Tensor<int|float> $gradient
* @param array[] $expected
*/
public function step(Parameter $param, Tensor $gradient, array $expected) : void
{
$step = $this->optimizer->step($param, $gradient);
$this->assertEquals($expected, $step->asArray());
}
/**
* @return \Generator<array>
*/
public function stepProvider() : Generator
{
yield [
new Parameter(Matrix::quick([
[0.1, 0.6, -0.4],
[0.5, 0.6, -0.4],
[0.1, 0.1, -0.7],
])),
Matrix::quick([
[0.01, 0.05, -0.02],
[-0.01, 0.02, 0.03],
[0.04, -0.01, -0.5],
]),
[
[1e-5, 5e-5, -2e-5],
[-1e-5, 2e-5, 3e-5],
[4e-5, -1e-5, -0.0005],
],
];
}
}