CNN Lange-termijngeheugennetwerken

CNN Lange-termijngeheugennetwerken

Zachte kennismaking met terugkerende neurale netwerken van CNN LSTM
met voorbeeld Python-code.

Invoer met ruimtelijke structuur, zoals afbeeldingen, kan niet eenvoudig worden gemodelleerd met de standaard Vanilla LSTM.

Het CNN Long Short-Term Memory Network of kortweg CNN LSTM is een LSTM-architectuur die speciaal is ontworpen voor sequentievoorspellingsproblemen met ruimtelijke invoer, zoals afbeeldingen of video's.

In dit bericht ontdek je de CNN LSTM-architectuur voor sequentievoorspelling.

Na het voltooien van dit bericht weet je:

  • Over de ontwikkeling van de CNN LSTM-modelarchitectuur voor sequentievoorspelling.
  • Voorbeelden van de soorten problemen waarvoor het CNN LSTM-model geschikt is.
  • Hoe de CNN LSTM-architectuur in Python met Keras te implementeren.

Geef uw project een kickstart met mijn nieuwe boek Long Short-Term Memory Networks With Python, inclusief stap-voor-stap tutorials en de Python-broncode bestanden voor alle voorbeelden.

Laten we beginnen.

Convolutioneel neuraal netwerk Netwerken voor lang kortetermijngeheugen

Convolutioneel neuraal netwerk Netwerk voor lang kortetermijngeheugen
Foto door Yair Aronshtam, enkele rechten voorbehouden.

CNN LSTM-architectuur

De CNN LSTM-architectuur omvat het gebruik van Convolutional Neural Network (CNN) -lagen voor kenmerk-extractie van invoergegevens in combinatie met LSTM's om sequentievoorspelling te ondersteunen.

CNN LSTM's zijn ontwikkeld voor visuele tijdreeksvoorspellingsproblemen en de toepassing van het genereren van tekstuele beschrijvingen van reeksen afbeeldingen (bijv. Video's). Specifiek de problemen van:

  • Activiteitsherkenning: Het genereren van een tekstuele beschrijving van een activiteit die wordt gedemonstreerd in een reeks afbeeldingen.
  • Afbeeldingsomschrijving: Een tekstuele beschrijving van een enkele afbeelding genereren.
  • video beschrijving: Het genereren van een tekstuele beschrijving van een reeks afbeeldingen.

[CNN LSTMs are] een klasse modellen die zowel ruimtelijk als temporeel diep is, en de flexibiliteit heeft om te worden toegepast op een verscheidenheid aan vision-taken met opeenvolgende inputs en outputs

- Langdurige terugkerende convolutionele netwerken voor visuele herkenning en beschrijving, 2015.

Deze architectuur werd oorspronkelijk aangeduid als een langdurig recurrent convolutioneel netwerk of LRCN-model, hoewel we in deze les de meer algemene naam "CNN LSTM" zullen gebruiken om te verwijzen naar LSTM's die een CNN gebruiken als front-end.

Deze architectuur wordt gebruikt voor het genereren van tekstuele beschrijvingen van afbeeldingen. De sleutel is het gebruik van een CNN die vooraf is getraind in een uitdagende taak voor beeldclassificatie die opnieuw wordt gebruikt als een functie-extractor voor het probleem dat de ondertiteling genereert.

... het is normaal om een ​​CNN te gebruiken als een "encoder" voor afbeeldingen, door hem eerst vooraf te trainen voor een taak voor beeldclassificatie en de laatste verborgen laag te gebruiken als invoer voor de RNN-decoder die zinnen genereert

- Show and Tell: A Neural Image Caption Generator, 2015.

Deze architectuur is ook gebruikt bij problemen met spraakherkenning en natuurlijke taalverwerking, waarbij CNN's worden gebruikt als kenmerk-extractors voor de LSTM's op audio- en tekstinvoergegevens.

Deze architectuur is geschikt voor problemen die:

  • Hebben een ruimtelijke structuur in hun invoer, zoals de 2D-structuur of pixels in een afbeelding of de 1D-structuur van woorden in een zin, alinea of ​​document.
  • Hebben een tijdelijke structuur in hun invoer, zoals de volgorde van afbeeldingen in een video of woorden in tekst, of vereisen het genereren van uitvoer met een tijdelijke structuur zoals woorden in een tekstuele beschrijving.
Convolutioneel neuraal netwerk Netwerkarchitectuur voor lang kortetermijngeheugen

Convolutioneel neuraal netwerk Netwerkarchitectuur voor lang kortetermijngeheugen

Hulp nodig met LSTM's voor sequentievoorspelling?

Volg mijn gratis 7-daagse e-mailcursus en ontdek 6 verschillende LSTM-architecturen (met code).

Klik om u aan te melden en ontvang ook een gratis pdf-e-boekversie van de cursus.

Start nu uw GRATIS minicursus!

Implementeer CNN LSTM in Keras

We kunnen een CNN LSTM-model definiëren dat gezamenlijk in Keras moet worden getraind.

Een CNN LSTM kan worden gedefinieerd door CNN-lagen aan de voorkant toe te voegen, gevolgd door LSTM-lagen met een Dichte-laag op de uitvoer.

Het is nuttig om deze architectuur te beschouwen als het definiëren van twee submodellen: het CNN-model voor het extraheren van kenmerken en het LSTM-model voor het interpreteren van de kenmerken in verschillende tijdsstappen.

Laten we beide submodellen eens bekijken in de context van een reeks 2D-invoer waarvan we aannemen dat het afbeeldingen zijn.

CNN-model

Als opfriscursus kunnen we een 2D convolutioneel netwerk definiëren dat bestaat uit Conv2D- en MaxPooling2D-lagen die zijn gerangschikt in een stapel met de vereiste diepte.

De Conv2D zal momentopnames van de afbeelding interpreteren (bijv. Kleine vierkantjes) en de pollinglagen zullen de interpretatie consolideren of abstraheren.

Het onderstaande fragment verwacht bijvoorbeeld te lezen in afbeeldingen van 10 × 10 pixel met 1 kanaal (bijvoorbeeld zwart-wit). De Conv2D leest de afbeelding in 2 × 2 snapshots en geeft een nieuwe 10 × 10 interpretatie van de afbeelding weer. De MaxPooling2D zal de interpretatie bundelen in 2 × 2 blokken, waardoor de output wordt gereduceerd tot een 5 × 5 consolidatie. De Flatten-laag neemt de enkele 5 × 5-kaart en transformeert deze in een vector met 25 elementen die klaar is voor een andere laag, zoals een Dense voor het uitvoeren van een voorspelling.

Dit is logisch voor beeldclassificatie en andere computervisie-taken.

LSTM-model

Het bovenstaande CNN-model kan slechts één afbeelding verwerken en deze van invoerpixels omzetten in een interne matrix of vectorweergave.

We moeten deze bewerking herhalen voor meerdere afbeeldingen en de LSTM toestaan ​​om interne status op te bouwen en gewichten bij te werken met behulp van BPTT over een reeks interne vectorrepresentaties van invoerafbeeldingen.

De CNN kan worden opgelost in het geval van het gebruik van een bestaand vooraf getraind model zoals VGG voor het extraheren van kenmerken uit afbeeldingen. De CNN is misschien niet getraind, en we willen hem misschien trainen door de fout van de LSTM over meerdere invoerbeelden terug te proppen naar het CNN-model.

In beide gevallen is er conceptueel één CNN-model en een reeks LSTM-modellen, één voor elke tijdstap. We willen het CNN-model toepassen op elk invoerbeeld en de uitvoer van elk invoerbeeld als een enkele tijdstap doorgeven aan de LSTM.

We kunnen dit bereiken door het volledige CNN-invoermodel (één laag of meer) in een TimeDistributed-laag te wikkelen. Deze laag bereikt het gewenste resultaat door dezelfde laag of lagen meerdere keren aan te brengen. In dit geval, het meerdere keren toepassen op meerdere invoertijdstappen en op zijn beurt een reeks "beeldinterpretaties" of "beeldkenmerken" aan het LSTM-model leveren om aan te werken.

We hebben nu de twee elementen van het model; laten we ze samenvoegen.

CNN LSTM-model

We kunnen een CNN LSTM-model in Keras definiëren door eerst de CNN-laag of -lagen te definiëren, ze in een TimeDistributed-laag te wikkelen en vervolgens de LSTM- en uitvoerlagen te definiëren.

We hebben twee manieren om het model te definiëren die gelijkwaardig zijn en alleen verschillen op basis van smaak.

U kunt eerst het CNN-model definiëren en het vervolgens aan het LSTM-model toevoegen door de hele reeks CNN-lagen als volgt in een TimeDistributed-laag te wikkelen:

Een alternatieve, en misschien gemakkelijker te lezen, benadering is om elke laag in het CNN-model in een TimeDistributed-laag te wikkelen wanneer u deze aan het hoofdmodel toevoegt.

Het voordeel van deze tweede benadering is dat alle lagen in de modelsamenvatting voorkomen en daarom voorlopig de voorkeur hebben.

U kunt de methode kiezen die u verkiest.

Verder lezen

Deze sectie biedt meer bronnen over het onderwerp als u dieper zoekt.

Papers over CNN LSTM

Keras API

Berichten

Overzicht

In dit bericht heb je de CNN LSTN-modelarchitectuur ontdekt.

Concreet heb je geleerd:

  • Over de ontwikkeling van de CNN LSTM-modelarchitectuur voor sequentievoorspelling.
  • Voorbeelden van de soorten problemen waarvoor het CNN LSTM-model geschikt is.
  • Hoe de CNN LSTM-architectuur in Python met Keras te implementeren.

Heb je nog vragen?
Stel je vragen in de comments hieronder en ik zal mijn best doen om deze te beantwoorden.

Ontwikkel vandaag nog LSTM's voor sequentievoorspelling!

Lange-termijngeheugennetwerken met Python

Ontwikkel uw eigen LSTM-modellen in enkele minuten

... met slechts een paar regels python-code

Ontdek hoe in mijn nieuwe e-boek:
Lange-termijngeheugennetwerken met Python

Het zorgt voor zelfstudie tutorials over onderwerpen als:
CNN LSTM's, Encoder-Decoder LSTM's, generatieve modellen, gegevensvoorbereiding, voorspellingen doen en veel meer...

Breng eindelijk LSTM terugkerende neurale netwerken naar
Uw projecten voor sequentievoorspellingen

Sla de academici over. Alleen resultaten.

Zie wat erin zit

Du kan også være interessert