MicroMLP عبارة عن شبكة عصبية اصطناعية صغيرة متعددة الطبقات (تستخدم بشكل أساسي في وحدات ESP32 وPycom)
من السهل جدًا الدمج وخفيف جدًا بملف واحد فقط:
ميزات ميكروملب:
- هيكل متعدد الطبقات والاتصالات قابل للتعديل
- التحيز المتكامل على الخلايا العصبية
- اللدونة من الاتصالات المدرجة
- وظائف التنشيط حسب الطبقة
- معلمات ألفا وإيتا وكسب
- إدارة مجموعة من الأمثلة والتعلم
- وظائف QLearning لاستخدام التعلم المعزز
- حفظ وتحميل كل البنية إلى/من ملف json
- وظائف التنشيط المختلفة:
- خطوة هيفيسايد الثنائية
- لوجستية (خطوة سيجمية أو ناعمة)
- الظل الزائدي
- مقوم SoftPlus
- ReLU (الوحدة الخطية المصححة)
- وظيفة غاوسية
استخدم التعلم العميق من أجل:
- معالجة الإشارات (معالجة الكلام، تحديد الهوية، التصفية)
- معالجة الصور (الضغط، التعرف، الأنماط)
- التحكم (التشخيص، مراقبة الجودة، الروبوتات)
- التحسين (التخطيط وتنظيم المرور والتمويل)
- المحاكاة (محاكاة الصندوق الأسود)
- التصنيف (تحليل الحمض النووي)
- التقريب (دالة غير معروفة، دالة معقدة)
باستخدام وظائف MicroMLP الثابتة:
اسم | وظيفة |
---|
يخلق | mlp = MicroMLP.Create(neuronsByLayers, activationFuncName, layersAutoConnectFunction=None, useBiasValue=1.0) |
تحميل من ملف | mlp = MicroMLP.LoadFromFile(filename) |
استخدام MicroMLP لإنشاء شبكة عصبية بسرعة:
from microMLP import MicroMLP
mlp = MicroMLP . Create ([ 3 , 10 , 2 ], "Sigmoid" , MicroMLP . LayersFullConnect )
باستخدام فئة MicroMLP الرئيسية:
اسم | وظيفة |
---|
منشئ | mlp = MicroMLP() |
GetLayer | layer = mlp.GetLayer(layerIndex) |
GetLayerIndex | idx = mlp.GetLayerIndex(layer) |
RemoveLayer | mlp.RemoveLayer(layer) |
GetInputLayer | inputLayer = mlp.GetInputLayer() |
GetOutputLayer | outputLayer = mlp.GetOutputLayer() |
يتعلم | ok = mlp.Learn(inputVectorNNValues, targetVectorNNValues) |
امتحان | ok = mlp.Test(inputVectorNNValues, targetVectorNNValues) |
يتنبأ | 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) |
AddExample | ok = mlp.AddExample(inputVectorNNValues, targetVectorNNValues) |
أمثلة واضحة | mlp.ClearExamples() |
تعلم الأمثلة | learnCount = mlp.LearnExamples(maxSeconds=30, maxCount=None, stopWhenLearned=True, printMAEAverage=True) |
ملكية | مثال | القراءة/الكتابة |
---|
طبقات | mlp.Layers | يحصل |
عدد الطبقات | mlp.LayersCount | يحصل |
IsNetworkComplete | mlp.IsNetworkComplete | يحصل |
MSE | mlp.MSE | يحصل |
ماي | mlp.MAE | يحصل |
MSEPercent | mlp.MSEPercent | يحصل |
MAEPercent | mlp.MAEPercent | يحصل |
عدد الأمثلة | mlp.ExamplesCount | يحصل |
استخدام MicroMLP للتعرف على مشكلة XOr (مع الظل الزائدي):
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!" )
عامل | وصف | تقصير |
---|
mlp.Eta | ترجيح تصحيح الخطأ | 0.30 |
mlp.Alpha | قوة الاتصالات اللدونة | 0.75 |
mlp.Gain | اكتساب التعلم عبر الشبكة | 0.99 |
mlp.CorrectLearnedMAE | عتبة خطأ التعلم الذاتي | 0.02 |
الرسم البياني | اسم وظيفة التنشيط | ثابت | التفاصيل |
---|
| "Heaviside" | MicroMLP.ACTFUNC_HEAVISIDE | خطوة هيفيسايد الثنائية |
| "Sigmoid" | MicroMLP.ACTFUNC_SIGMOID | لوجستية (خطوة سيجمية أو ناعمة) |
| "TanH" | MicroMLP.ACTFUNC_TANH | الظل الزائدي |
| "SoftPlus" | MicroMLP.ACTFUNC_SOFTPLUS | مقوم SoftPlus |
| "ReLU" | MicroMLP.ACTFUNC_RELU | وحدة خطية مصححة |
| "Gaussian" | MicroMLP.ACTFUNC_GAUSSIAN | وظيفة غاوسية |
وظيفة الاتصال التلقائي للطبقات | التفاصيل |
---|
MicroMLP.LayersFullConnect | الشبكة متصلة بالكامل |
باستخدام فئة MicroMLP.Layer :
اسم | وظيفة |
---|
منشئ | layer = MicroMLP.Layer(parentMicroMLP, activationFuncName=None, neuronsCount=0) |
GetLayerIndex | idx = layer.GetLayerIndex() |
احصل على نيورون | 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() |
يزيل | layer.Remove() |
ملكية | مثال | القراءة/الكتابة |
---|
ParentMicroMLP | layer.ParentMicroMLP | يحصل |
اسم التنشيط | layer.ActivationFuncName | يحصل |
الخلايا العصبية | layer.Neurons | يحصل |
عدد الخلايا العصبية | layer.NeuronsCount | يحصل |
باستخدام فئة MicroMLP.InputLayer(Layer) :
اسم | وظيفة |
---|
منشئ | inputLayer = MicroMLP.InputLayer(parentMicroMLP, neuronsCount=0) |
SetInputVectorNNValues | ok = inputLayer.SetInputVectorNNValues(inputVectorNNValues) |
باستخدام فئة MicroMLP.OutputLayer(Layer) :
اسم | وظيفة |
---|
منشئ | outputLayer = MicroMLP.OutputLayer(parentMicroMLP, activationFuncName, neuronsCount=0) |
GetOutputVectorNNValues | outputVectorNNValues = outputLayer.GetOutputVectorNNValues() |
خطأ في حسابTargetLayer | ok = outputLayer.ComputeTargetLayerError(targetVectorNNValues) |
باستخدام فئة MicroMLP.Neuron :
اسم | وظيفة |
---|
منشئ | 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) |
قيمة الحساب | neuron.ComputeValue() |
خطأ حسابي | neuron.ComputeError(targetNNValue=None) |
يزيل | neuron.Remove() |
ملكية | مثال | القراءة/الكتابة |
---|
ParentLayer | neuron.ParentLayer | يحصل |
الإخراج المحسوب | neuron.ComputedOutput | يحصل |
خطأ دلتا المحسوب | neuron.ComputedDeltaError | يحصل |
خطأ محسوب | neuron.ComputedSignalError | يحصل |
باستخدام فئة MicroMLP.Connection :
اسم | وظيفة |
---|
منشئ | connection = MicroMLP.Connection(neuronSrc, neuronDst, weight=None) |
تحديث الوزن | connection.UpdateWeight(eta, alpha) |
يزيل | connection.Remove() |
ملكية | مثال | القراءة/الكتابة |
---|
نيورونسرك | connection.NeuronSrc | يحصل |
نيوروندست | connection.NeuronDst | يحصل |
وزن | connection.Weight | يحصل |
باستخدام فئة MicroMLP.Bias :
اسم | وظيفة |
---|
منشئ | bias = MicroMLP.Bias(neuronDst, value=1.0, weight=None) |
تحديث الوزن | bias.UpdateWeight(eta, alpha) |
يزيل | bias.Remove() |
ملكية | مثال | القراءة/الكتابة |
---|
نيوروندست | bias.NeuronDst | يحصل |
قيمة | bias.Value | يحصل |
وزن | bias.Weight | يحصل |
باستخدام وظائف MicroMLP.NNValue الثابتة:
اسم | وظيفة |
---|
من النسبة المئوية | nnvalue = MicroMLP.NNValue.FromPercent(value) |
نسبة جديدة | nnvalue = MicroMLP.NNValue.NewPercent() |
من بايت | nnvalue = MicroMLP.NNValue.FromByte(value) |
نيوبايت | nnvalue = MicroMLP.NNValue.NewByte() |
من بول | nnvalue = MicroMLP.NNValue.FromBool(value) |
NewBool | nnvalue = MicroMLP.NNValue.NewBool() |
من AnalogSignal | nnvalue = MicroMLP.NNValue.FromAnalogSignal(value) |
NewAnalogSignal | nnvalue = MicroMLP.NNValue.NewAnalogSignal() |
باستخدام فئة MicroMLP.NNValue :
اسم | وظيفة |
---|
منشئ | nnvalue = MicroMLP.NNValue(minValue, maxValue, value) |
ملكية | مثال | القراءة/الكتابة |
---|
AsFloat | nnvalue.AsFloat = 639.513 | الحصول على / تعيين |
AsInt | nnvalue.AsInt = 12345 | الحصول على / تعيين |
كنسبة مئوية | nnvalue.AsPercent = 65 | الحصول على / تعيين |
AsByte | nnvalue.AsByte = b'x75' | الحصول على / تعيين |
AsBool | nnvalue.AsBool = True | الحصول على / تعيين |
AsAnalogSignal | nnvalue.AsAnalogSignal = 0.39472 | الحصول على / تعيين |
بواسطة JC`zic لـ HC² ;')
يبقيه بسيط، غبي ؟