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

Trainingsdatasets voor neurale netwerken:een neuraal netwerk voor Python trainen en valideren

In dit artikel gebruiken we door Excel gegenereerde voorbeelden om een ​​Perceptron met meerdere lagen te trainen, en dan zullen we zien hoe het netwerk presteert met validatievoorbeelden .

Als u een neuraal netwerk voor Python wilt ontwikkelen, bent u hier aan het juiste adres. Voordat u ingaat op de bespreking van dit artikel over het gebruik van Excel om trainingsgegevens voor uw netwerk te ontwikkelen, kunt u overwegen de rest van de onderstaande serie te bekijken voor achtergrondinformatie:

  1. Hoe classificatie uitvoeren met behulp van een neuraal netwerk:wat is de Perceptron?
  2. Een eenvoudig Perceptron neuraal netwerkvoorbeeld gebruiken om gegevens te classificeren
  3. Een basis Perceptron neuraal netwerk trainen
  4. Eenvoudige neurale netwerktraining begrijpen
  5. Een inleiding tot trainingstheorie voor neurale netwerken
  6. De leersnelheid in neurale netwerken begrijpen
  7. Geavanceerde machine learning met de meerlaagse Perceptron
  8. De Sigmoid-activeringsfunctie:activering in meerlaagse Perceptron neurale netwerken
  9. Een meerlagig Perceptron neuraal netwerk trainen
  10. Trainingsformules en backpropagation voor meerlaagse perceptrons begrijpen
  11. Neurale netwerkarchitectuur voor een Python-implementatie
  12. Hoe maak je een meerlaags Perceptron neuraal netwerk in Python
  13. Signaalverwerking met behulp van neurale netwerken:validatie in neuraal netwerkontwerp
  14. Trainingsdatasets voor neurale netwerken:een neuraal netwerk met Python trainen en valideren

Wat zijn trainingsgegevens?

In een realistisch scenario bestaan ​​trainingsvoorbeelden uit gemeten gegevens van een soort gecombineerd met de "oplossingen" die het neurale netwerk zullen helpen al deze informatie te generaliseren in een consistente input-outputrelatie.

Stel dat u wilt dat uw neurale netwerk de eetkwaliteit van een tomaat voorspelt op basis van kleur, vorm en dichtheid. Je hebt geen idee hoe de kleur, vorm en dichtheid precies samenhangen met de algehele heerlijkheid, maar je kunt meet kleur, vorm en dichtheid, en u doe smaakpapillen hebben. Het enige wat je dus hoeft te doen is duizenden en duizenden tomaten verzamelen, hun relevante fysieke kenmerken noteren, ze allemaal proeven (het beste deel) en dan al deze informatie in een tabel zetten.

Elke rij is wat ik een trainingsvoorbeeld noem, en er zijn vier kolommen:drie hiervan (kleur, vorm en dichtheid) zijn invoerkolommen en de vierde is de doeluitvoer.


Tijdens de training zal het neurale netwerk de relatie vinden (als er een coherente relatie bestaat) tussen de drie invoerwaarden en de uitvoerwaarde.

Trainingsgegevens kwantificeren

Houd er rekening mee dat alles in numerieke vorm moet worden verwerkt. Je kunt de string "pruimvormig" niet gebruiken als invoer voor je neurale netwerk, en "overheerlijk" zal niet werken als uitvoerwaarde. U moet uw metingen en uw classificaties kwantificeren.

Voor vorm kunt u elke tomaat een waarde toekennen van –1 tot +1, waarbij –1 perfect bolvormig is en +1 extreem langwerpig. Voor eetkwaliteit kun je elke tomaat beoordelen op een vijfpuntsschaal, variërend van "oneetbaar" tot "verrukkelijk" en vervolgens one-hot-codering gebruiken om de beoordelingen toe te wijzen aan een uitvoervector met vijf elementen.

Het volgende diagram laat zien hoe dit type codering wordt gebruikt voor de classificatie van de uitvoer van neurale netwerken.


Het one-hot output-schema stelt ons in staat om niet-binaire classificaties te kwantificeren op een manier die compatibel is met logistieke sigmoid-activering. De uitvoer van de logistische functie is in wezen binair omdat het overgangsgebied van de curve smal is in vergelijking met het oneindige bereik van invoerwaarden waarvoor de uitvoerwaarde zeer dicht bij het minimum of maximum ligt:

We willen dit netwerk dus niet configureren met een enkel uitvoerknooppunt en vervolgens trainingsvoorbeelden leveren met uitvoerwaarden van 0, 1, 2, 3 of 4 (dat zou 0, 0,2, 0,4, 0,6 of 0,8 zijn) als u binnen het bereik van 0 tot 1 wilt blijven); de logistieke activeringsfunctie van het outputknooppunt zou sterk de voorkeur geven aan de minimum- en maximumclassificaties.

Het neurale netwerk begrijpt gewoon niet hoe belachelijk het zou zijn om te concluderen dat alle tomaten ofwel oneetbaar of verrukkelijk zijn.

Een trainingsgegevensset maken

Het neurale netwerk van Python dat we in deel 12 hebben besproken, importeert trainingsvoorbeelden uit een Excel-bestand. De trainingsgegevens die ik voor dit voorbeeld zal gebruiken, zijn als volgt georganiseerd:

Onze huidige Perceptron-code is beperkt tot één uitvoerknooppunt, dus alles wat we kunnen doen is een waar/onwaar type classificatie uitvoeren. De invoerwaarden zijn willekeurige getallen tussen –5 en +5, gegenereerd met behulp van deze Excel-formule:

=RANDTUSSEN(-10, 10)/2

Zoals te zien is in de schermafbeelding, wordt de output als volgt berekend:

=IF(AND(A2>0, B2>0, C2<0), 1, 0)

De uitvoer is dus alleen waar als invoer_0 groter is dan nul, invoer_1 groter is dan nul en invoer_2 kleiner is dan nul. Anders is het onwaar.

Dit is de wiskundige input-outputrelatie die de Perceptron uit de trainingsgegevens moet halen. U kunt zoveel voorbeelden genereren als u wilt. Voor een eenvoudig probleem als dit kun je een zeer hoge classificatienauwkeurigheid bereiken met 5000 monsters en één tijdvak.

Het netwerk trainen

U moet uw invoerdimensionaliteit instellen op drie (I_dim =3, als u mijn variabelenamen gebruikt). Ik heb het netwerk geconfigureerd om vier verborgen knooppunten te hebben (H_dim =4), en ik koos een leersnelheid van 0,1 (LR =0,1).

Zoek de training_data =pandas.read_excel(...) verklaring en voeg de naam van uw spreadsheet in. (Als u geen toegang hebt tot Excel, kan de Pandas-bibliotheek ook ODS-bestanden lezen.) Klik vervolgens op de knop Uitvoeren. Trainen met 5000 samples duurt slechts een paar seconden op mijn 2,5 GHz Windows-laptop.

Als je het volledige "MLP_v1.py"-programma gebruikt dat ik in deel 12 heb opgenomen, begint de validatie (zie de volgende sectie) onmiddellijk nadat de training is voltooid, dus je moet je validatiegegevens bij de hand hebben voordat je het netwerk traint .

Het netwerk valideren

Om de prestaties van het netwerk te valideren, maak ik een tweede spreadsheet en genereer ik invoer- en uitvoerwaarden met exact dezelfde formules, en vervolgens importeer ik deze validatiegegevens op dezelfde manier als ik trainingsgegevens importeer:

Het volgende codefragment laat zien hoe u basisvalidatie kunt uitvoeren:


Ik gebruik de standaard feedforward-procedure om het postactiveringssignaal van het outputknooppunt te berekenen, en dan gebruik ik een if/else-statement om een ​​drempel toe te passen die de postactivation-waarde omzet in een true/false classificatiewaarde.

De nauwkeurigheid van de classificatie wordt berekend door de classificatiewaarde te vergelijken met de doelwaarde voor de huidige validatiesteekproef, het aantal correcte classificaties te tellen en te delen door het aantal validatiesteekproeven.

Onthoud dat als u de np.random.seed(1) becommentarieerde instructie, zullen de gewichten elke keer dat u het programma uitvoert, initialiseren naar verschillende willekeurige waarden, en bijgevolg zal de nauwkeurigheid van de classificatie van de ene run naar de andere veranderen. Ik heb 15 afzonderlijke runs uitgevoerd met de hierboven gespecificeerde parameters, 5000 trainingsvoorbeelden en 1000 validatievoorbeelden.

De laagste classificatienauwkeurigheid was 88,5%, de hoogste was 98,1% en het gemiddelde was 94,4%.

Conclusie

We hebben enkele belangrijke theoretische informatie behandeld met betrekking tot trainingsgegevens van neurale netwerken, en we hebben een eerste trainings- en validatie-experiment gedaan met onze Python-taal meerlaagse Perceptron. Ik hoop dat je geniet van AAC's serie over neurale netwerken - we hebben veel vooruitgang geboekt sinds het eerste artikel en er is nog veel meer dat we moeten bespreken!


Industriële robot

  1. Hoe de huidige datum en tijd in Python te krijgen?
  2. Neuromorfe AI-chips voor het versterken van neurale netwerken debuut
  3. Hoe een VHDL-simulator en -editor gratis te installeren
  4. Lokale minima in neurale netwerktraining begrijpen
  5. De nauwkeurigheid van een neuraal netwerk met verborgen lagen vergroten
  6. Hoeveel verborgen lagen en verborgen knooppunten heeft een neuraal netwerk nodig?
  7. Signaalverwerking met behulp van neurale netwerken:validatie in neuraal netwerkontwerp
  8. De vijf belangrijkste problemen en uitdagingen voor 5G
  9. Hoe u uw draadloze sensornetwerken kunt voeden en onderhouden
  10. BECKER'S vacuümpomptraining voor jou en mij
  11. Hoe u de trainingstijd voor robotlassen kunt verkorten?