MonoLayer Perceptron
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\SynapticWeightsProvider;
|
||||
|
||||
interface INetworkSynapticWeightsProvider
|
||||
{
|
||||
public function generate(int $input_size, int $output_size, int $hidden_layers_count, int $hidden_layers_neurons_count): array;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\SynapticWeightsProvider;
|
||||
|
||||
use App\Services\SynapticWeightsProvider\INetworkSynapticWeightsProvider;
|
||||
|
||||
class SimpleNetworkWeightsProvider implements INetworkSynapticWeightsProvider
|
||||
{
|
||||
public function __construct(
|
||||
private ISynapticWeightsProvider $synapticWeightsProvider,
|
||||
) {
|
||||
}
|
||||
|
||||
public function generate(int $input_size, int $output_size, int $hidden_layers_count, int $hidden_layers_neurons_count): array
|
||||
{
|
||||
$synaptic_weights = [];
|
||||
$lastLayerSize = $input_size;
|
||||
|
||||
// Generate Hidden Layer weights
|
||||
for ($hiddenLayerNeuronIndex = 0; $hiddenLayerNeuronIndex < $hidden_layers_count; $hiddenLayerNeuronIndex++) {
|
||||
for ($neuronIndex = 0; $neuronIndex < $hidden_layers_neurons_count; $neuronIndex++) {
|
||||
$synaptic_weights[] = $this->synapticWeightsProvider->generate($lastLayerSize);
|
||||
}
|
||||
$lastLayerSize = $hidden_layers_neurons_count;
|
||||
}
|
||||
|
||||
// Generate Output Layer weights
|
||||
$synaptic_weights[] = [];
|
||||
for ($outputNeuronIndex = 0; $outputNeuronIndex < $output_size; $outputNeuronIndex++) {
|
||||
$synaptic_weights[count($synaptic_weights) -1][] = $this->synapticWeightsProvider->generate($lastLayerSize);
|
||||
}
|
||||
|
||||
return $synaptic_weights;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user