MicroMLP adalah perceptron multilayer jaringan saraf tiruan mikro (terutama digunakan pada modul ESP32 dan Pycom)
Sangat mudah diintegrasikan dan sangat ringan hanya dengan satu file :
Fitur MicroMLP :
- Struktur multilayer dan koneksi yang dapat dimodifikasi
- Bias terintegrasi pada neuron
- Plastisitas sambungan disertakan
- Fungsi aktivasi berdasarkan lapisan
- Parameter Alpha, Eta dan Gain
- Mengelola serangkaian contoh dan pembelajaran
- QLearning berfungsi menggunakan pembelajaran penguatan
- Simpan dan muat semua struktur ke/dari file json
- Berbagai fungsi aktivasi:
- Langkah biner berat
- Logistik (langkah sigmoid atau lunak)
- Garis singgung hiperbolik
- Penyearah SoftPlus
- ReLU (unit linier yang diperbaiki)
- Fungsi Gaussian
Gunakan pembelajaran mendalam untuk:
- Pemrosesan sinyal (pemrosesan ucapan, identifikasi, pemfilteran)
- Pemrosesan gambar (kompresi, pengenalan, pola)
- Kontrol (diagnosis, kontrol kualitas, robotika)
- Optimalisasi (perencanaan, pengaturan lalu lintas, keuangan)
- Simulasi (simulasi kotak hitam)
- Klasifikasi (analisis DNA)
- Perkiraan (fungsi tidak diketahui, fungsi kompleks)
Menggunakan fungsi statis MicroMLP :
Nama | Fungsi |
---|
Membuat | mlp = MicroMLP.Create(neuronsByLayers, activationFuncName, layersAutoConnectFunction=None, useBiasValue=1.0) |
MuatDariFile | mlp = MicroMLP.LoadFromFile(filename) |
Menggunakan MicroMLP membuat jaringan saraf dengan cepat :
from microMLP import MicroMLP
mlp = MicroMLP . Create ([ 3 , 10 , 2 ], "Sigmoid" , MicroMLP . LayersFullConnect )
Menggunakan kelas utama MicroMLP :
Nama | Fungsi |
---|
Konstruktor | mlp = MicroMLP() |
Dapatkan Lapisan | layer = mlp.GetLayer(layerIndex) |
DapatkanLayerIndex | idx = mlp.GetLayerIndex(layer) |
Hapus Lapisan | mlp.RemoveLayer(layer) |
DapatkanInputLayer | inputLayer = mlp.GetInputLayer() |
DapatkanOutputLayer | outputLayer = mlp.GetOutputLayer() |
Mempelajari | ok = mlp.Learn(inputVectorNNValues, targetVectorNNValues) |
Tes | ok = mlp.Test(inputVectorNNValues, targetVectorNNValues) |
Meramalkan | outputVectorNNValues = mlp.Predict(inputVectorNNValues) |
QLearningLearnForChosenAction | ok = mlp.QLearningLearnForChosenAction(stateVectorNNValues, rewardNNValue, pastStateVectorNNValues, chosenActionIndex, terminalState=True, discountFactorNNValue=None) |
QLearningPredictBestActionIndex | bestActionIndex = mlp.QLearningPredictBestActionIndex(stateVectorNNValues) |
Simpan Ke File | ok = mlp.SaveToFile(filename) |
Tambahkan Contoh | ok = mlp.AddExample(inputVectorNNValues, targetVectorNNValues) |
Contoh Jelas | mlp.ClearExamples() |
Pelajari Contoh | learnCount = mlp.LearnExamples(maxSeconds=30, maxCount=None, stopWhenLearned=True, printMAEAverage=True) |
Milik | Contoh | Baca/Tulis |
---|
Lapisan | mlp.Layers | mendapatkan |
Jumlah Lapisan | mlp.LayersCount | mendapatkan |
IsNetworkLengkap | mlp.IsNetworkComplete | mendapatkan |
UMK | mlp.MSE | mendapatkan |
MAE | mlp.MAE | mendapatkan |
MSEPersen | mlp.MSEPercent | mendapatkan |
MAEPersen | mlp.MAEPercent | mendapatkan |
ContohHitungan | mlp.ExamplesCount | mendapatkan |
Menggunakan MicroMLP untuk mempelajari masalah XOr (dengan tangen hiperbolik):
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!" )
Variabel | Keterangan | Bawaan |
---|
mlp.Eta | Pembobotan koreksi kesalahan | 0,30 |
mlp.Alpha | Kekuatan sambungan plastisitas | 0,75 |
mlp.Gain | Keuntungan pembelajaran jaringan | 0,99 |
mlp.CorrectLearnedMAE | Ambang batas kesalahan belajar mandiri | 0,02 |
Grafik | Nama fungsi aktivasi | Konstan | Detil |
---|
| "Heaviside" | MikroMLP.ACTFUNC_HEAVISIDE | Langkah biner berat |
| "Sigmoid" | MikroMLP.ACTFUNC_SIGMOID | Logistik (langkah sigmoid atau lunak) |
| "TanH" | MikroMLP.ACTFUNC_TANH | Garis singgung hiperbolik |
| "SoftPlus" | MikroMLP.ACTFUNC_SOFTPLUS | Penyearah SoftPlus |
| "ReLU" | MikroMLP.ACTFUNC_RELU | Unit linier yang diperbaiki |
| "Gaussian" | MikroMLP.ACTFUNC_GAUSSIAN | Fungsi Gaussian |
Fungsi koneksi otomatis lapisan | Detil |
---|
MicroMLP.LayersFullConnect | Jaringan terhubung sepenuhnya |
Menggunakan kelas MicroMLP.Layer :
Nama | Fungsi |
---|
Konstruktor | layer = MicroMLP.Layer(parentMicroMLP, activationFuncName=None, neuronsCount=0) |
DapatkanLayerIndex | idx = layer.GetLayerIndex() |
Dapatkan Neuron | neuron = layer.GetNeuron(neuronIndex) |
Dapatkan NeuronIndex | idx = layer.GetNeuronIndex(neuron) |
Tambahkan Neuron | layer.AddNeuron(neuron) |
Hapus Neuron | layer.RemoveNeuron(neuron) |
Dapatkan MeanSquareError | mse = layer.GetMeanSquareError() |
DapatkanMeanAbsoluteError | mae = layer.GetMeanAbsoluteError() |
DapatkanMeanSquareErrorAsPercent | mseP = layer.GetMeanSquareErrorAsPercent() |
DapatkanMeanAbsoluteErrorAsPercent | maeP = layer.GetMeanAbsoluteErrorAsPercent() |
Menghapus | layer.Remove() |
Milik | Contoh | Baca/Tulis |
---|
IndukMicroMLP | layer.ParentMicroMLP | mendapatkan |
Nama Fungsi Aktivasi | layer.ActivationFuncName | mendapatkan |
Neuron | layer.Neurons | mendapatkan |
Jumlah Neuron | layer.NeuronsCount | mendapatkan |
Menggunakan kelas MicroMLP.InputLayer(Layer) :
Nama | Fungsi |
---|
Konstruktor | inputLayer = MicroMLP.InputLayer(parentMicroMLP, neuronsCount=0) |
SetInputVectorNNValues | ok = inputLayer.SetInputVectorNNValues(inputVectorNNValues) |
Menggunakan kelas MicroMLP.OutputLayer(Layer) :
Nama | Fungsi |
---|
Konstruktor | outputLayer = MicroMLP.OutputLayer(parentMicroMLP, activationFuncName, neuronsCount=0) |
DapatkanOutputVectorNNValues | outputVectorNNValues = outputLayer.GetOutputVectorNNValues() |
ComputeTargetLayerError | ok = outputLayer.ComputeTargetLayerError(targetVectorNNValues) |
Menggunakan kelas MicroMLP.Neuron :
Nama | Fungsi |
---|
Konstruktor | neuron = MicroMLP.Neuron(parentLayer) |
Dapatkan NeuronIndex | idx = neuron.GetNeuronIndex() |
DapatkanInputConnections | connections = neuron.GetInputConnections() |
DapatkanOutputConnections | connections = neuron.GetOutputConnections() |
TambahkanInputConnection | neuron.AddInputConnection(connection) |
TambahkanKoneksiOutput | neuron.AddOutputConnection(connection) |
HapusInputConnection | neuron.RemoveInputConnection(connection) |
HapusOutputConnection | neuron.RemoveOutputConnection(connection) |
SetBias | neuron.SetBias(bias) |
Dapatkan Bias | neuron.GetBias() |
SetOutputNNNilai | neuron.SetOutputNNValue(nnvalue) |
Nilai Komputasi | neuron.ComputeValue() |
Kesalahan Komputasi | neuron.ComputeError(targetNNValue=None) |
Menghapus | neuron.Remove() |
Milik | Contoh | Baca/Tulis |
---|
Lapisan Induk | neuron.ParentLayer | mendapatkan |
Output yang Dihitung | neuron.ComputedOutput | mendapatkan |
ComputedDeltaError | neuron.ComputedDeltaError | mendapatkan |
ComputedSignalError | neuron.ComputedSignalError | mendapatkan |
Menggunakan kelas MicroMLP.Connection :
Nama | Fungsi |
---|
Konstruktor | connection = MicroMLP.Connection(neuronSrc, neuronDst, weight=None) |
PerbaruiBerat | connection.UpdateWeight(eta, alpha) |
Menghapus | connection.Remove() |
Milik | Contoh | Baca/Tulis |
---|
NeuronSrc | connection.NeuronSrc | mendapatkan |
NeuronDst | connection.NeuronDst | mendapatkan |
Berat | connection.Weight | mendapatkan |
Menggunakan kelas MicroMLP.Bias :
Nama | Fungsi |
---|
Konstruktor | bias = MicroMLP.Bias(neuronDst, value=1.0, weight=None) |
PerbaruiBerat | bias.UpdateWeight(eta, alpha) |
Menghapus | bias.Remove() |
Milik | Contoh | Baca/Tulis |
---|
NeuronDst | bias.NeuronDst | mendapatkan |
Nilai | bias.Value | mendapatkan |
Berat | bias.Weight | mendapatkan |
Menggunakan fungsi statis MicroMLP.NNValue :
Nama | Fungsi |
---|
DariPersen | nnvalue = MicroMLP.NNValue.FromPercent(value) |
Persen Baru | nnvalue = MicroMLP.NNValue.NewPercent() |
DariByte | nnvalue = MicroMLP.NNValue.FromByte(value) |
Byte Baru | nnvalue = MicroMLP.NNValue.NewByte() |
DariBool | nnvalue = MicroMLP.NNValue.FromBool(value) |
Bool Baru | nnvalue = MicroMLP.NNValue.NewBool() |
DariSinyal Analog | nnvalue = MicroMLP.NNValue.FromAnalogSignal(value) |
Sinyal Analog Baru | nnvalue = MicroMLP.NNValue.NewAnalogSignal() |
Menggunakan kelas MicroMLP.NNValue :
Nama | Fungsi |
---|
Konstruktor | nnvalue = MicroMLP.NNValue(minValue, maxValue, value) |
Milik | Contoh | Baca/Tulis |
---|
Sebagai Mengambang | nnvalue.AsFloat = 639.513 | dapatkan / atur |
SebagaiInt | nnvalue.AsInt = 12345 | dapatkan / atur |
Sebagai Persen | nnvalue.AsPercent = 65 | dapatkan / atur |
SebagaiByte | nnvalue.AsByte = b'x75' | dapatkan / atur |
SebagaiBool | nnvalue.AsBool = True | dapatkan / atur |
Sebagai Sinyal Analog | nnvalue.AsAnalogSignal = 0.39472 | dapatkan / atur |
Oleh JC`zic untuk HC² ;')
Tetap sederhana, bodoh ?