MicroMLP는 마이크로 인공 신경망 다층 퍼셉트론입니다(주로 ESP32 및 Pycom 모듈에 사용됨).

통합이 매우 쉽고 파일 하나만 있으면 매우 가볍습니다.
MicroMLP 기능:
- 수정 가능한 다층 및 연결 구조
- 뉴런에 대한 통합 편향
- 포함된 연결의 가소성
- 레이어별 활성화 기능
- 매개변수 알파, 에타 및 게인
- 일련의 예제 및 학습 관리
- 강화학습을 활용하는 QLearning 기능
- json 파일에서 모든 구조를 저장하고 로드합니다.
- 다양한 활성화 기능 :
- 헤비사이드 바이너리 스텝
- 로지스틱(시그모이드 또는 소프트 스텝)
- 쌍곡선 탄젠트
- SoftPlus 정류기
- ReLU(정류 선형 장치)
- 가우스 함수
다음 용도로 딥 러닝을 사용하세요.
- 신호처리(음성처리, 식별, 필터링)
- 이미지 처리(압축, 인식, 패턴)
- 제어(진단, 품질관리, 로봇공학)
- 최적화(계획, 교통 규제, 금융)
- 시뮬레이션(블랙박스 시뮬레이션)
- 분류(DNA분석)
- 근사(알 수 없는 함수, 복소 함수)

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) |
레이어 인덱스 가져오기 | idx = mlp.GetLayerIndex(layer) |
레이어 제거 | mlp.RemoveLayer(layer) |
입력 레이어 가져오기 | inputLayer = mlp.GetInputLayer() |
출력레이어 가져오기 | outputLayer = mlp.GetOutputLayer() |
배우다 | ok = mlp.Learn(inputVectorNNValues, targetVectorNNValues) |
시험 | ok = mlp.Test(inputVectorNNValues, targetVectorNNValues) |
예측하다 | outputVectorNNValues = mlp.Predict(inputVectorNNValues) |
QLearningLearnForChosen액션 | ok = mlp.QLearningLearnForChosenAction(stateVectorNNValues, rewardNNValue, pastStateVectorNNValues, chosenActionIndex, terminalState=True, discountFactorNNValue=None) |
QLearningPredictBestActionIndex | bestActionIndex = mlp.QLearningPredictBestActionIndex(stateVectorNNValues) |
파일에 저장 | ok = mlp.SaveToFile(filename) |
예 추가 | 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 | 얻다 |
MSE퍼센트 | mlp.MSEPercent | 얻다 |
MAEP퍼센트 | 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) |
레이어 인덱스 가져오기 | idx = layer.GetLayerIndex() |
GetNeuron | neuron = layer.GetNeuron(neuronIndex) |
뉴런인덱스 가져오기 | idx = layer.GetNeuronIndex(neuron) |
뉴런 추가 | layer.AddNeuron(neuron) |
제거뉴런 | layer.RemoveNeuron(neuron) |
GetMeanSquareError | mse = layer.GetMeanSquareError() |
GetMeanAbsoluteError | mae = layer.GetMeanAbsoluteError() |
GetMeanSquareErrorAsPercent | mseP = layer.GetMeanSquareErrorAsPercent() |
GetMeanAbsoluteErrorAsPercent | maeP = layer.GetMeanAbsoluteErrorAsPercent() |
제거하다 | layer.Remove() |
재산 | 예 | 읽기/쓰기 |
---|
상위MicroMLP | layer.ParentMicroMLP | 얻다 |
활성화 기능 이름 | layer.ActivationFuncName | 얻다 |
뉴런 | layer.Neurons | 얻다 |
뉴런수 | layer.NeuronsCount | 얻다 |
MicroMLP.InputLayer(Layer) 클래스 사용:
이름 | 기능 |
---|
건설자 | inputLayer = MicroMLP.InputLayer(parentMicroMLP, neuronsCount=0) |
입력벡터NN값 설정 | ok = inputLayer.SetInputVectorNNValues(inputVectorNNValues) |
MicroMLP.OutputLayer(Layer) 클래스 사용:
이름 | 기능 |
---|
건설자 | outputLayer = MicroMLP.OutputLayer(parentMicroMLP, activationFuncName, neuronsCount=0) |
GetOutputVectorNN값 | outputVectorNNValues = outputLayer.GetOutputVectorNNValues() |
ComputeTargetLayer오류 | ok = outputLayer.ComputeTargetLayerError(targetVectorNNValues) |
MicroMLP.Neuron 클래스 사용:
이름 | 기능 |
---|
건설자 | neuron = MicroMLP.Neuron(parentLayer) |
뉴런인덱스 가져오기 | idx = neuron.GetNeuronIndex() |
GetInputConnections | connections = neuron.GetInputConnections() |
GetOutputConnections | connections = neuron.GetOutputConnections() |
입력 연결 추가 | neuron.AddInputConnection(connection) |
출력연결 추가 | neuron.AddOutputConnection(connection) |
입력 연결 제거 | neuron.RemoveInputConnection(connection) |
출력 연결 제거 | neuron.RemoveOutputConnection(connection) |
편향 설정 | neuron.SetBias(bias) |
GetBias | neuron.GetBias() |
출력NN값 설정 | neuron.SetOutputNNValue(nnvalue) |
계산값 | neuron.ComputeValue() |
계산오류 | neuron.ComputeError(targetNNValue=None) |
제거하다 | neuron.Remove() |
재산 | 예 | 읽기/쓰기 |
---|
상위 레이어 | neuron.ParentLayer | 얻다 |
계산된 출력 | neuron.ComputedOutput | 얻다 |
계산된델타오류 | neuron.ComputedDeltaError | 얻다 |
계산된 신호 오류 | neuron.ComputedSignalError | 얻다 |
MicroMLP.Connection 클래스 사용:
이름 | 기능 |
---|
건설자 | connection = MicroMLP.Connection(neuronSrc, neuronDst, weight=None) |
업데이트무게 | connection.UpdateWeight(eta, alpha) |
제거하다 | connection.Remove() |
재산 | 예 | 읽기/쓰기 |
---|
뉴런Src | connection.NeuronSrc | 얻다 |
뉴런Dst | connection.NeuronDst | 얻다 |
무게 | connection.Weight | 얻다 |
MicroMLP.Bias 클래스 사용:
이름 | 기능 |
---|
건설자 | bias = MicroMLP.Bias(neuronDst, value=1.0, weight=None) |
업데이트무게 | bias.UpdateWeight(eta, alpha) |
제거하다 | bias.Remove() |
재산 | 예 | 읽기/쓰기 |
---|
뉴런Dst | bias.NeuronDst | 얻다 |
값 | bias.Value | 얻다 |
무게 | bias.Weight | 얻다 |
MicroMLP.NNValue 정적 함수 사용:
이름 | 기능 |
---|
FromPercent | nnvalue = MicroMLP.NNValue.FromPercent(value) |
뉴퍼센트 | nnvalue = MicroMLP.NNValue.NewPercent() |
FromByte | nnvalue = MicroMLP.NNValue.FromByte(value) |
뉴바이트 | nnvalue = MicroMLP.NNValue.NewByte() |
FromBool | nnvalue = MicroMLP.NNValue.FromBool(value) |
NewBool | nnvalue = MicroMLP.NNValue.NewBool() |
FromAnalog신호 | nnvalue = MicroMLP.NNValue.FromAnalogSignal(value) |
새로운아날로그신호 | 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 | 얻다/설정하다 |
아날로그 신호로 | nnvalue.AsAnalogSignal = 0.39472 | 얻다/설정하다 |
HC²를 위한 JC`zic 작성 ;')
간단하게 해라, 바보야 ?