MicroMLP ist ein mehrschichtiges Perzeptron für ein mikrokünstliches neuronales Netzwerk (wird hauptsächlich auf ESP32- und Pycom-Modulen verwendet).
Sehr einfach zu integrieren und sehr leicht mit nur einer Datei:
MicroMLP-Funktionen:
- Modifizierbare Mehrschicht- und Verbindungsstruktur
- Integrierter Bias auf Neuronen
- Plastizität der Verbindungen inklusive
- Aktivierungsfunktionen nach Schicht
- Parameter Alpha, Eta und Gain
- Verwalten einer Reihe von Beispielen und Lernen
- QLearning-Funktionen zur Nutzung von Reinforcement Learning
- Speichern und laden Sie die gesamte Struktur in/aus der JSON-Datei
- Verschiedene Aktivierungsfunktionen:
- Heaviside-Binärschritt
- Logistik (Sigmoid oder Soft Step)
- Hyperbolischer Tangens
- SoftPlus-Gleichrichter
- ReLU (gleichgerichtete Lineareinheit)
- Gaußsche Funktion
Nutzen Sie Deep Learning für:
- Signalverarbeitung (Sprachverarbeitung, Identifizierung, Filterung)
- Bildverarbeitung (Komprimierung, Erkennung, Muster)
- Steuerung (Diagnose, Qualitätskontrolle, Robotik)
- Optimierung (Planung, Verkehrsregelung, Finanzen)
- Simulation (Black-Box-Simulation)
- Klassifizierung (DNA-Analyse)
- Näherung (unbekannte Funktion, komplexe Funktion)
Verwendung statischer MicroMLP -Funktionen:
Name | Funktion |
---|
Erstellen | mlp = MicroMLP.Create(neuronsByLayers, activationFuncName, layersAutoConnectFunction=None, useBiasValue=1.0) |
LoadFromFile | mlp = MicroMLP.LoadFromFile(filename) |
Mit MicroMLP schnell ein neuronales Netzwerk erstellen:
from microMLP import MicroMLP
mlp = MicroMLP . Create ([ 3 , 10 , 2 ], "Sigmoid" , MicroMLP . LayersFullConnect )
Verwendung der MicroMLP- Hauptklasse:
Name | Funktion |
---|
Konstrukteur | mlp = MicroMLP() |
GetLayer | layer = mlp.GetLayer(layerIndex) |
GetLayerIndex | idx = mlp.GetLayerIndex(layer) |
RemoveLayer | mlp.RemoveLayer(layer) |
GetInputLayer | inputLayer = mlp.GetInputLayer() |
GetOutputLayer | outputLayer = mlp.GetOutputLayer() |
Lernen | ok = mlp.Learn(inputVectorNNValues, targetVectorNNValues) |
Prüfen | ok = mlp.Test(inputVectorNNValues, targetVectorNNValues) |
Vorhersagen | outputVectorNNValues = mlp.Predict(inputVectorNNValues) |
QLearningLearnForChosenAction | ok = mlp.QLearningLearnForChosenAction(stateVectorNNValues, rewardNNValue, pastStateVectorNNValues, chosenActionIndex, terminalState=True, discountFactorNNValue=None) |
QLearningPredictBestActionIndex | bestActionIndex = mlp.QLearningPredictBestActionIndex(stateVectorNNValues) |
SaveToFile | ok = mlp.SaveToFile(filename) |
Beispiel hinzufügen | ok = mlp.AddExample(inputVectorNNValues, targetVectorNNValues) |
ClearExamples | mlp.ClearExamples() |
Erfahren Sie Beispiele | learnCount = mlp.LearnExamples(maxSeconds=30, maxCount=None, stopWhenLearned=True, printMAEAverage=True) |
Eigentum | Beispiel | Lesen/Schreiben |
---|
Schichten | mlp.Layers | erhalten |
LayersCount | mlp.LayersCount | erhalten |
IsNetworkComplete | mlp.IsNetworkComplete | erhalten |
MSE | mlp.MSE | erhalten |
MAE | mlp.MAE | erhalten |
MSEPercent | mlp.MSEPercent | erhalten |
MAEPercent | mlp.MAEPercent | erhalten |
BeispieleAnzahl | mlp.ExamplesCount | erhalten |
Verwenden von MicroMLP zum Erlernen des XOr-Problems (mit hyperbolischem Tangens):
from microMLP import MicroMLP
mlp = MicroMLP . Create ( neuronsByLayers = [ 2 , 2 , 1 ],
activationFuncName = MicroMLP . ACTFUNC_TANH ,
layersAutoConnectFunction = MicroMLP . LayersFullConnect )
nnFalse = MicroMLP . NNValue . FromBool ( False )
nnTrue = MicroMLP . NNValue . FromBool ( True )
mlp . AddExample ( [ nnFalse , nnFalse ], [ nnFalse ] )
mlp . AddExample ( [ nnFalse , nnTrue ], [ nnTrue ] )
mlp . AddExample ( [ nnTrue , nnTrue ], [ nnFalse ] )
mlp . AddExample ( [ nnTrue , nnFalse ], [ nnTrue ] )
learnCount = mlp . LearnExamples ()
print ( "LEARNED :" )
print ( " - False xor False = %s" % mlp . Predict ([ nnFalse , nnFalse ])[ 0 ]. AsBool )
print ( " - False xor True = %s" % mlp . Predict ([ nnFalse , nnTrue ] )[ 0 ]. AsBool )
print ( " - True xor True = %s" % mlp . Predict ([ nnTrue , nnTrue ] )[ 0 ]. AsBool )
print ( " - True xor False = %s" % mlp . Predict ([ nnTrue , nnFalse ])[ 0 ]. AsBool )
if mlp . SaveToFile ( "mlp.json" ) :
print ( "MicroMLP structure saved!" )
Variable | Beschreibung | Standard |
---|
mlp.Eta | Gewichtung der Fehlerkorrektur | 0,30 |
mlp.Alpha | Stärke der Verbindungen Plastizität | 0,75 |
mlp.Gain | Lerngewinn im Netzwerk | 0,99 |
mlp.CorrectLearnedMAE | Schwelle für selbstlernende Fehler | 0,02 |
Graphe | Name der Aktivierungsfunktion | Konst | Detail |
---|
| "Heaviside" | MicroMLP.ACTFUNC_HEAVISIDE | Heaviside-Binärschritt |
| "Sigmoid" | MicroMLP.ACTFUNC_SIGMOID | Logistik (Sigmoid oder Soft Step) |
| "TanH" | MicroMLP.ACTFUNC_TANH | Hyperbolischer Tangens |
| "SoftPlus" | MicroMLP.ACTFUNC_SOFTPLUS | SoftPlus-Gleichrichter |
| "ReLU" | MicroMLP.ACTFUNC_RELU | Gleichgerichtete Lineareinheit |
| "Gaussian" | MicroMLP.ACTFUNC_GAUSSIAN | Gaußsche Funktion |
Automatische Ebenenverbindungsfunktion | Detail |
---|
MicroMLP.LayersFullConnect | Netzwerk vollständig verbunden |
Verwenden der MicroMLP.Layer -Klasse:
Name | Funktion |
---|
Konstrukteur | layer = MicroMLP.Layer(parentMicroMLP, activationFuncName=None, neuronsCount=0) |
GetLayerIndex | idx = layer.GetLayerIndex() |
GetNeuron | neuron = layer.GetNeuron(neuronIndex) |
GetNeuronIndex | idx = layer.GetNeuronIndex(neuron) |
AddNeuron | layer.AddNeuron(neuron) |
RemoveNeuron | layer.RemoveNeuron(neuron) |
GetMeanSquareError | mse = layer.GetMeanSquareError() |
GetMeanAbsoluteError | mae = layer.GetMeanAbsoluteError() |
GetMeanSquareErrorAsPercent | mseP = layer.GetMeanSquareErrorAsPercent() |
GetMeanAbsoluteErrorAsPercent | maeP = layer.GetMeanAbsoluteErrorAsPercent() |
Entfernen | layer.Remove() |
Eigentum | Beispiel | Lesen/Schreiben |
---|
ParentMicroMLP | layer.ParentMicroMLP | erhalten |
ActivationFuncName | layer.ActivationFuncName | erhalten |
Neuronen | layer.Neurons | erhalten |
NeuronsCount | layer.NeuronsCount | erhalten |
Verwenden der Klasse MicroMLP.InputLayer(Layer) :
Name | Funktion |
---|
Konstrukteur | inputLayer = MicroMLP.InputLayer(parentMicroMLP, neuronsCount=0) |
SetInputVectorNNValues | ok = inputLayer.SetInputVectorNNValues(inputVectorNNValues) |
Verwenden der Klasse MicroMLP.OutputLayer(Layer) :
Name | Funktion |
---|
Konstrukteur | outputLayer = MicroMLP.OutputLayer(parentMicroMLP, activationFuncName, neuronsCount=0) |
GetOutputVectorNNValues | outputVectorNNValues = outputLayer.GetOutputVectorNNValues() |
ComputeTargetLayerError | ok = outputLayer.ComputeTargetLayerError(targetVectorNNValues) |
Verwendung der MicroMLP.Neuron -Klasse:
Name | Funktion |
---|
Konstrukteur | neuron = MicroMLP.Neuron(parentLayer) |
GetNeuronIndex | idx = neuron.GetNeuronIndex() |
GetInputConnections | connections = neuron.GetInputConnections() |
GetOutputConnections | connections = neuron.GetOutputConnections() |
AddInputConnection | neuron.AddInputConnection(connection) |
AddOutputConnection | neuron.AddOutputConnection(connection) |
RemoveInputConnection | neuron.RemoveInputConnection(connection) |
RemoveOutputConnection | neuron.RemoveOutputConnection(connection) |
SetBias | neuron.SetBias(bias) |
GetBias | neuron.GetBias() |
SetOutputNNValue | neuron.SetOutputNNValue(nnvalue) |
ComputeValue | neuron.ComputeValue() |
ComputeError | neuron.ComputeError(targetNNValue=None) |
Entfernen | neuron.Remove() |
Eigentum | Beispiel | Lesen/Schreiben |
---|
ParentLayer | neuron.ParentLayer | erhalten |
Berechnete Ausgabe | neuron.ComputedOutput | erhalten |
BerechneterDeltaError | neuron.ComputedDeltaError | erhalten |
ComputedSignalError | neuron.ComputedSignalError | erhalten |
Verwenden der MicroMLP.Connection -Klasse:
Name | Funktion |
---|
Konstrukteur | connection = MicroMLP.Connection(neuronSrc, neuronDst, weight=None) |
UpdateWeight | connection.UpdateWeight(eta, alpha) |
Entfernen | connection.Remove() |
Eigentum | Beispiel | Lesen/Schreiben |
---|
NeuronSrc | connection.NeuronSrc | erhalten |
NeuronDst | connection.NeuronDst | erhalten |
Gewicht | connection.Weight | erhalten |
Verwenden der MicroMLP.Bias -Klasse:
Name | Funktion |
---|
Konstrukteur | bias = MicroMLP.Bias(neuronDst, value=1.0, weight=None) |
UpdateWeight | bias.UpdateWeight(eta, alpha) |
Entfernen | bias.Remove() |
Eigentum | Beispiel | Lesen/Schreiben |
---|
NeuronDst | bias.NeuronDst | erhalten |
Wert | bias.Value | erhalten |
Gewicht | bias.Weight | erhalten |
Verwendung statischer MicroMLP.NNValue -Funktionen:
Name | Funktion |
---|
VonProzent | nnvalue = MicroMLP.NNValue.FromPercent(value) |
NewPercent | nnvalue = MicroMLP.NNValue.NewPercent() |
FromByte | nnvalue = MicroMLP.NNValue.FromByte(value) |
Neues Byte | nnvalue = MicroMLP.NNValue.NewByte() |
FromBool | nnvalue = MicroMLP.NNValue.FromBool(value) |
NewBool | nnvalue = MicroMLP.NNValue.NewBool() |
FromAnalogSignal | nnvalue = MicroMLP.NNValue.FromAnalogSignal(value) |
NewAnalogSignal | nnvalue = MicroMLP.NNValue.NewAnalogSignal() |
Verwenden der MicroMLP.NNValue -Klasse:
Name | Funktion |
---|
Konstrukteur | nnvalue = MicroMLP.NNValue(minValue, maxValue, value) |
Eigentum | Beispiel | Lesen/Schreiben |
---|
AsFloat | nnvalue.AsFloat = 639.513 | bekommen / setzen |
AsInt | nnvalue.AsInt = 12345 | bekommen / setzen |
AsPercent | nnvalue.AsPercent = 65 | bekommen / setzen |
AsByte | nnvalue.AsByte = b'x75' | bekommen / setzen |
AsBool | nnvalue.AsBool = True | bekommen / setzen |
AlsAnalogSignal | nnvalue.AsAnalogSignal = 0.39472 | bekommen / setzen |
Von JC`zic für HC² ;')
Halte es einfach, Dummkopf ?