Files
Reseaux-de-neurones-artific…/tests/Unit/Training/GradientDescentPerceptronTest.php
Matthias Guillitte 88a932391b
Some checks failed
linter / quality (push) Successful in 7m39s
tests / ci (8.4) (push) Successful in 6m10s
tests / ci (8.5) (push) Has been cancelled
Renamed tests + added some + misc
2026-03-22 16:57:12 +01:00

74 lines
2.8 KiB
PHP

<?php
namespace Tests\Unit\Training;
use App\Models\NetworksTraining\GradientDescentPerceptronTraining;
use App\Services\DatasetReader\LinearOrderDataSetReader;
use App\Services\SynapticWeightsProvider\ZeroSynapticWeights;
use Tests\Services\IterationEventBuffer\DullIterationEventBuffer;
class GradientDescentPerceptronTest extends TrainingTestCase
{
public function test_gradient_descent_perceptron_training_logic_and()
{
$training = new GradientDescentPerceptronTraining(
datasetReader: new LinearOrderDataSetReader(public_path('data_sets/logic_and_gradient.csv')),
learningRate: 0.2,
maxEpochs: 100,
synapticWeightsProvider: new ZeroSynapticWeights(),
iterationEventBuffer: new DullIterationEventBuffer(),
sessionId: 'test-session',
trainingId: 'test-training',
minError: 0.125001,
);
$this->verifyTrainingResults(
training: $training,
expectedWeights: [[[-1.497898, 0.998228, 0.998228]]],
expectedEpochs: 49
);
}
// public function test_gradient_descent_perceptron_training_table_2_9()
// {
// $training = new GradientDescentPerceptronTraining(
// datasetReader: new LinearOrderDataSetReader(public_path('data_sets/table_2_9.csv')),
// learningRate: 0.0011,
// maxEpochs: 1000,
// synapticWeightsProvider: new ZeroSynapticWeights(),
// iterationEventBuffer: new DullIterationEventBuffer(),
// sessionId: 'test-session',
// trainingId: 'test-training',
// minError: 5.524889, // Impossible pour un dataset avec des labels -1 et 1 d'avoir une erreur moyenne supérieure à 2
// );
// $this->verifyTrainingResults(
// training: $training,
// expectedWeights: [[[-0.664816, -0.522798, 0.342044]]],
// expectedEpochs: 402
// );
// }
public function test_gradient_descent_perceptron_training_table_2_10()
{
$training = new GradientDescentPerceptronTraining(
datasetReader: new LinearOrderDataSetReader(public_path('data_sets/table_2_10.csv')),
learningRate: 0.0015,
maxEpochs: 1000,
synapticWeightsProvider: new ZeroSynapticWeights(),
iterationEventBuffer: new DullIterationEventBuffer(),
sessionId: 'test-session',
trainingId: 'test-training',
// minError: 16.388103, // Impossible pour un dataset avec des labels -1 et 1 d'avoir une erreur moyenne supérieure à 2
minError: 0.000000001,
);
$this->verifyTrainingResults(
training: $training,
expectedWeights: [[[-0.04107, -0.263527, 0.286406]]],
expectedEpochs: 1000
);
}
}