Refactored into folders
This commit is contained in:
@@ -5,12 +5,14 @@ namespace App\Http\Controllers;
|
||||
use App\Events\PerceptronInitialization;
|
||||
use App\Models\GradientDescentPerceptronTraining;
|
||||
use App\Models\SimpleBinaryPerceptronTraining;
|
||||
use App\Services\DataSetReader;
|
||||
use App\Services\ISynapticWeightsProvider;
|
||||
use App\Services\PerceptronIterationEventBuffer;
|
||||
use App\Services\PerceptronLimitedEpochEventBuffer;
|
||||
use App\Services\ZeroSynapticWeights;
|
||||
use App\Services\DatasetReader\IDataSetReader;
|
||||
use App\Services\DatasetReader\LinearOrderDataSetReader;
|
||||
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
|
||||
{
|
||||
@@ -23,7 +25,7 @@ class PerceptronController extends Controller
|
||||
|
||||
$learningRate = 0.01;
|
||||
$maxIterations = 200;
|
||||
$minError = 0.6;
|
||||
$minError = 0.1;
|
||||
|
||||
switch ($perceptronType) {
|
||||
case 'simple':
|
||||
@@ -53,7 +55,7 @@ class PerceptronController extends Controller
|
||||
if (pathinfo($file, PATHINFO_EXTENSION) === 'csv') {
|
||||
$dataset = [];
|
||||
$dataset['label'] = str_replace('.csv', '', $file);
|
||||
$dataSetReader = new DataSetReader($dataSetsDirectory . '/' . $file);
|
||||
$dataSetReader = new LinearOrderDataSetReader($dataSetsDirectory . '/' . $file);
|
||||
$dataset['data'] = [];
|
||||
switch (count($dataSetReader->lines[0])) {
|
||||
case 3:
|
||||
@@ -84,6 +86,7 @@ class PerceptronController extends Controller
|
||||
switch ($perceptronType) {
|
||||
case 'gradientdescent':
|
||||
$dataset['defaultLearningRate'] = 0.3;
|
||||
$dataset['defaultMinError'] = 0.125;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -94,7 +97,6 @@ class PerceptronController extends Controller
|
||||
break;
|
||||
case 'gradientdescent':
|
||||
$dataset['defaultLearningRate'] = 0.001;
|
||||
$dataset['defaultMinError'] = 2.0;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -108,10 +110,10 @@ class PerceptronController extends Controller
|
||||
return $datasets;
|
||||
}
|
||||
|
||||
private function getDataSetReader(string $dataSet): DataSetReader
|
||||
private function getDataSetReader(string $dataSet): IDataSetReader
|
||||
{
|
||||
$dataSetFileName = "data_sets/{$dataSet}.csv";
|
||||
return new DataSetReader($dataSetFileName);
|
||||
return new LinearOrderDataSetReader($dataSetFileName);
|
||||
}
|
||||
|
||||
public function run(Request $request, ISynapticWeightsProvider $synapticWeightsProvider)
|
||||
@@ -141,6 +143,16 @@ 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,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user