Rafactored Perceptrons and network training

This commit is contained in:
2026-03-22 14:58:34 +01:00
parent 47991fe736
commit 42e07de287
9 changed files with 18 additions and 29 deletions

View File

@@ -3,16 +3,16 @@
namespace App\Http\Controllers;
use App\Events\PerceptronInitialization;
use App\Models\GradientDescentPerceptronTraining;
use App\Models\SimpleBinaryPerceptronTraining;
use App\Models\NetworksTraining\GradientDescentPerceptronTraining;
use App\Models\NetworksTraining\SimpleBinaryPerceptronTraining;
use App\Services\DatasetReader\IDataSetReader;
use App\Services\DatasetReader\LinearOrderDataSetReader;
use App\Services\DatasetReader\RandomOrderDataSetReader;
use App\Services\IterationEventBuffer\PerceptronIterationEventBuffer;
use App\Services\IterationEventBuffer\PerceptronLimitedEpochEventBuffer;
use App\Services\SynapticWeightsProvider\ISynapticWeightsProvider;
use App\Services\SynapticWeightsProvider\ZeroSynapticWeights;
use Illuminate\Http\Request;
use Tests\Services\IterationEventBuffer\DullIterationEventBuffer;
class PerceptronController extends Controller
{
@@ -113,7 +113,7 @@ class PerceptronController extends Controller
private function getDataSetReader(string $dataSet): IDataSetReader
{
$dataSetFileName = "data_sets/{$dataSet}.csv";
return new LinearOrderDataSetReader($dataSetFileName);
return new RandomOrderDataSetReader($dataSetFileName);
}
public function run(Request $request, ISynapticWeightsProvider $synapticWeightsProvider)
@@ -143,16 +143,6 @@ class PerceptronController extends Controller
$networkTraining = match ($perceptronType) {
'simple' => new SimpleBinaryPerceptronTraining($dataSetReader, $learningRate, $maxIterations, $synapticWeightsProvider, $iterationEventBuffer, $sessionId, $trainingId),
'gradientdescent' => new GradientDescentPerceptronTraining($dataSetReader, $learningRate, $maxIterations, $synapticWeightsProvider, $iterationEventBuffer, $sessionId, $trainingId, $minError),
'gradientdescentTest' => new GradientDescentPerceptronTraining(
datasetReader: new LinearOrderDataSetReader(public_path('data_sets/logic_and_gradient.csv')),
learningRate: 0.2,
maxEpochs: 100,
synapticWeightsProvider: new ZeroSynapticWeights(),
iterationEventBuffer: $iterationEventBuffer,
sessionId: 'test-session',
trainingId: 'test-training',
minError: 0.125001,
),
default => null,
};

View File

@@ -1,8 +0,0 @@
<?php
namespace App\Models;
abstract class Network
{
}

View File

@@ -1,8 +1,11 @@
<?php
namespace App\Models;
namespace App\Models\NetworksTraining;
use App\Events\PerceptronTrainingEnded;
use App\Models\ActivationsFunctions;
use App\Models\Perceptrons\GradientDescentPerceptron;
use App\Models\Perceptrons\Perceptron;
use App\Services\DatasetReader\IDataSetReader;
use App\Services\IterationEventBuffer\IPerceptronIterationEventBuffer;
use App\Services\SynapticWeightsProvider\ISynapticWeightsProvider;

View File

@@ -1,10 +1,11 @@
<?php
namespace App\Models;
namespace App\Models\NetworksTraining;
use App\Events\PerceptronTrainingEnded;
use App\Services\DatasetReader\IDataSetReader;
use App\Services\IterationEventBuffer\IPerceptronIterationEventBuffer;
use App\Models\ActivationsFunctions;
abstract class NetworkTraining
{

View File

@@ -1,8 +1,11 @@
<?php
namespace App\Models;
namespace App\Models\NetworksTraining;
use App\Events\PerceptronTrainingEnded;
use App\Models\ActivationsFunctions;
use App\Models\Perceptrons\Perceptron;
use App\Models\Perceptrons\SimpleBinaryPerceptron;
use App\Services\DatasetReader\IDataSetReader;
use App\Services\IterationEventBuffer\IPerceptronIterationEventBuffer;
use App\Services\SynapticWeightsProvider\ISynapticWeightsProvider;

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Perceptrons;
class GradientDescentPerceptron extends Perceptron {

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Perceptrons;
use Illuminate\Database\Eloquent\Model;

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Models;
namespace App\Models\Perceptrons;
class SimpleBinaryPerceptron extends Perceptron {

View File

@@ -4,7 +4,7 @@ namespace App\Services\DatasetReader;
use App\Services\CsvReader;
class RandomOrderDataSetReaders implements IDataSetReader {
class RandomOrderDataSetReader implements IDataSetReader {
public array $lines = [];
private array $currentLines = [];