Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Equipment >> Industriële robot

Een Multilayer Perceptron neuraal netwerk bouwen in Python: Een praktische gids

Dit artikel leidt u door een Python-programma dat een neuraal netwerk traint voor geavanceerde classificatie.

Dit is de 12e entry in AAC's neurale netwerk ontwikkeling reeks. Bekijk wat de reeks verder biedt:

  1. Hoe classificatie uit te voeren met een neuraal netwerk: Wat is de Perceptron?
  2. Hoe een simpele Perceptron-neuraal netwerk voorbeeld te gebruiken om data te classificeren
  3. Hoe een basale Perceptron-neuraal netwerk te trainen
  4. Eenvoudige neuraal netwerk training begrijpen
  5. Inleiding tot trainings theorie voor neurale netwerken
  6. Leer snelheid in neurale netwerken begrijpen
  7. Geavanceerde machine learning met de Multilayer Perceptron
  8. De Sigmoid-activeringsfunctie: Activering in Multilayer Perceptron neurale netwerken
  9. Hoe een Multilayer Perceptron neuraal netwerk te trainen
  10. Trainingsformules en Backpropagation voor Multilayer Perceptrons begrijpen
  11. Neuraal netwerk architectuur voor een Python-implementatie
  12. Hoe een Multilayer Perceptron neuraal netwerk in Python te maken
  13. Signaalverwerking met neurale netwerken: Validatie in neuraal netwerk ontwerp
  14. Trainingsdatasets voor neurale netwerken: Hoe een Python neuraal netwerk te trainen en valideren

In dit artikel bouwen we voort op ons werk met simpele perceptron-netwerken en breiden we het uit tot een volledig functionele multilayer perceptron (MLP) geïmplementeerd in Python.

Begrijpelijke Python-code voor neurale netwerken ontwikkelen

Na het herzien van talloze online bronnen, ontdekte ik dat veel implementaties ofwel te complex zijn of helderheid missen. Mijn doel was een programma te creëren dat zowel educatief als intuitief is, zodat lezers kunnen zien hoe theorie vertaalt naar code.

Hoewel dit script leesbaarheid vooropstelt boven ruwe prestaties, blijft het een stevige basis voor experimenten. Real-world toepassingen vereisen vaak geoptimaliseerde code voor grote datasets, maar voor leren en kleine-schaal projecten is helderheid waardevoller.

De volledige Python-bron is als afbeelding hieronder beschikbaar en kan gedownload worden als MLP_v1.py. De code voert training en validatie uit, met de focus van dit artikel op het trainingsproces.

Een Multilayer Perceptron neuraal netwerk bouwen in Python: Een praktische gids
 

Functies en variabelen voorbereiden

Een Multilayer Perceptron neuraal netwerk bouwen in Python: Een praktische gids

De NumPy-bibliotheek behandelt alle numerieke operaties, terwijl Pandas gemakkelijke import van trainingsdata uit Excel faciliteert. We gebruiken de logistische sigmoid-functie voor activering en de afgeleide ervan voor backpropagation. De leersnelheid, invoer-dimensionaliteit, verborgen laag grootte, en epoch-aantal worden hier ingesteld. Willekeurige initiële gewichten worden gegenereerd met np.random.uniform(-1, 1), en een vaste seed zorgt voor reproduceerbaarheid. Lege arrays voor verborgen pre-activerings- en post-activeringswaarden worden geïnitialiseerd.

Trainingsdata importeren

Een Multilayer Perceptron neuraal netwerk bouwen in Python: Een praktische gids

Volgens de procedure uit deel 4 lezen we de dataset uit Excel, scheiden de doelkolom, verwijderen deze van de kenmerkmatrix, converteren de overige data naar een NumPy-array, en slaan het monster-aantal op in training_count.

Feedforward-verwerking

De feedforward-fase berekent de netwerkuitvoer door invoeren door de verborgen laag naar het uitvoerknooppunt te propageren. De onderstaande code demonstreert de multi-epoch lus, per-monster berekeningen, verborgen-laag pre-activering en activering, en finale uitvoerberekening.

Een Multilayer Perceptron neuraal netwerk bouwen in Python: Een praktische gids

Binnen elke epoch itereren we over alle monsters. Voor elk monster berekenen we de verborgen knooppunt activeringen via dot-producten, passen de sigmoid toe, en berekenen dan de uitvoerknoop pre-activering en post-activering. De fout is het verschil tussen het doel en de uitvoer.

Backpropagation

Na feedforward past backpropagation gewichten in omgekeerde volgorde aan, door foutsignalen van de uitvoer terug door de verborgen laag te propageren. De volgende afbeelding illustreert de geneste lussen en gewichtsupdates.

Een Multilayer Perceptron neuraal netwerk bouwen in Python: Een praktische gids

We berekenen eerst de uitvoer-foutterm S_ERROR, en updaten dan de verborgen-naar-uitvoer gewichten. Vervolgens, voor elk verborgen knooppunt, berekenen we de bijdrage aan de invoer-naar-verborgen gewichtsupdates met behulp van het huidige verborgen-naar-uitvoer gewicht. Deze volgorde behoudt de correcte gradiëntberekeningen.

Een Multilayer Perceptron neuraal netwerk bouwen in Python: Een praktische gids

Conclusie

Dit beknopte script omvat de kernprincipes van een MLP: data-inname, voorwaartse propagatie, foutberekening, en gewichtsanpassing via backpropagation. Ik hoop dat het dient als een duidelijke brug tussen neuraal-netwerk theorie en praktische implementatie.

Hieronder de complete code voor referentie:

Een Multilayer Perceptron neuraal netwerk bouwen in Python: Een praktische gids

Code downloaden

Industriële robot

  1. Frictieloze gebruikerservaringen creëren: Een UX-design blauwdruk
  2. Lokale Minima in Neuraal Netwerk Training: Myth of Realiteit?
  3. Bias-knooppunten toevoegen aan een Multilayer Perceptron in Python
  4. Bouw Uw Eerste AWS CloudFormation Template – Een Praktische Gids
  5. Een Cloud Center of Excellence Bouwen: Strategieën Voor Succesvolle Migratie En Klantsucces
  6. Dynamische string-lijsten in VHDL: Best Practices & Voorbeeld
  7. Een self-checking testbench in VHDL bouwen – Een praktische gids
  8. Een betrouwbare timer in VHDL bouwen: klokcycli tellen tot uren
  9. Een klokgetriggerd proces in VHDL bouwen: een praktische gids
  10. Python Netwerkprogrammering: Sockets & Geavanceerde Protocols onder de knie
  11. Een Array van Objecten in Java aanmaken: Stap-voor-stap gids