Sieci pamięci długoterminowej CNN

Sieci pamięci długoterminowej CNN

Delikatne wprowadzenie do powtarzających się sieci neuronowych CNN LSTM
z przykładowym kodem w Pythonie.

Dane wejściowe o strukturze przestrzennej, takie jak obrazy, nie mogą być łatwo modelowane za pomocą standardowego Vanilla LSTM.

Sieć długookresowej pamięci CNN lub w skrócie CNN LSTM to architektura LSTM zaprojektowana specjalnie do problemów z przewidywaniem sekwencji z danymi wejściowymi przestrzennymi, takimi jak obrazy lub wideo.

W tym poście odkryjesz architekturę CNN LSTM do przewidywania sekwencji.

Po wypełnieniu tego posta będziesz wiedział:

  • O rozwoju architektury modelu CNN LSTM do przewidywania sekwencji.
  • Przykłady typów problemów, do których dostosowany jest model CNN LSTM.
  • Jak zaimplementować architekturę CNN LSTM w Pythonie za pomocą Keras.

Rozpocznij swój projekt z moją nową książką Long-Short-Term Memory Networks With Python, w tym samouczki krok po kroku i Kod źródłowy Pythona pliki dla wszystkich przykładów.

Zacznijmy.

Konwolucyjne sieci neuronowe długookresowe sieci pamięci

Konwolucyjne sieci neuronowe długookresowe sieci pamięci
Zdjęcie: Yair Aronshtam, niektóre prawa zastrzeżone.

Architektura CNN LSTM

Architektura CNN LSTM obejmuje wykorzystanie warstw Convolutional Neural Network (CNN) do wyodrębniania cech z danych wejściowych w połączeniu z LSTM w celu obsługi przewidywania sekwencji.

CNN LSTM zostały opracowane z myślą o problemach z przewidywaniem wizualnych szeregów czasowych oraz w zastosowaniu do generowania opisów tekstowych z sekwencji obrazów (np. Wideo). W szczególności problemy:

  • Rozpoznawanie aktywności: Generowanie tekstowego opisu czynności przedstawionej w sekwencji obrazów.
  • Opis obrazu: Generowanie tekstowego opisu pojedynczego obrazu.
  • Opis wideo: Generowanie tekstowego opisu sekwencji obrazów.

[CNN LSTMs are] klasa modeli, która jest głęboka zarówno przestrzennie, jak i czasowo i ma elastyczność, którą można zastosować do różnych zadań wizyjnych obejmujących sekwencyjne wejścia i wyjścia

- Długoterminowe powtarzające się sieci splotowe do rozpoznawania i opisu wizualnego, 2015.

Architektura ta była pierwotnie nazywana długoterminową rekurencyjną siecią splotową lub modelem LRCN, chociaż będziemy używać bardziej ogólnej nazwy „CNN LSTM” w odniesieniu do LSTM, które używają CNN jako interfejsu w tej lekcji.

Ta architektura jest używana do generowania tekstowych opisów obrazów. Kluczem jest użycie CNN, która jest wstępnie przeszkolona w trudnym zadaniu klasyfikacji obrazu, która jest ponownie wykorzystywana jako ekstraktor cech dla problemu generowania napisów.

… Naturalne jest użycie CNN jako „kodera” obrazu, najpierw przygotowując go do zadania klasyfikacji obrazu i wykorzystując ostatnią ukrytą warstwę jako dane wejściowe do dekodera RNN, który generuje zdania

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

Ta architektura została również wykorzystana w przypadku problemów z rozpoznawaniem mowy i przetwarzaniem języka naturalnego, gdzie CNN są używane jako ekstraktory funkcji dla LSTM w przypadku danych wejściowych audio i tekstowych.

Ta architektura jest odpowiednia dla problemów, które:

  • Mają strukturę przestrzenną na wejściu, taką jak struktura 2D lub piksele na obrazie lub struktura 1D słów w zdaniu, akapicie lub dokumencie.
  • Mają strukturę czasową na wejściu, taką jak kolejność obrazów w filmie lub słowa w tekście, lub wymagają generowania danych wyjściowych ze strukturą czasową, taką jak słowa w opisie tekstowym.
Konwolucyjna sieć neuronowa Architektura sieci długookresowej pamięci

Architektura sieci splotowych sieci neuronowych długookresowej pamięci

Potrzebujesz pomocy z LSTMs for Sequence Prediction?

Weź udział w moim bezpłatnym 7-dniowym kursie e-mail i odkryj 6 różnych architektur LSTM (z kodem).

Kliknij, aby się zarejestrować i otrzymać bezpłatną wersję kursu w formacie PDF Ebook.

Rozpocznij teraz BEZPŁATNY minikurs!

Wdrożenie CNN LSTM w Keras

Możemy zdefiniować model CNN LSTM do wspólnego treningu w Keras.

CNN LSTM można zdefiniować, dodając warstwy CNN na przednim końcu, a następnie warstwy LSTM z gęstą warstwą na wyjściu.

Warto pomyśleć o tej architekturze jako o dwóch podmodelach: modelu CNN do wyodrębniania cech i modelu LSTM do interpretacji cech w krokach czasowych.

Przyjrzyjmy się obu tym modelom podrzędnym w kontekście sekwencji danych wejściowych 2D, które zakładamy, że są obrazami.

Model CNN

W ramach przypomnienia możemy zdefiniować sieć splotową 2D jako składającą się z warstw Conv2D i MaxPooling2D uporządkowanych w stos o wymaganej głębokości.

Conv2D zinterpretuje migawki obrazu (np. Małe kwadraty), a warstwy odpytywania skonsolidują lub wyodrębnią interpretację.

Na przykład poniższy fragment ma zostać odczytany w obrazach 10 × 10 pikseli z 1 kanałem (np. Czarno-biały). Conv2D odczyta obraz w migawkach 2 × 2 i wyprowadzi jedną nową interpretację obrazu 10 × 10. MaxPooling2D połączy interpretację w bloki 2 × 2, zmniejszając wynik do konsolidacji 5 × 5. Warstwa Flatten pobierze pojedynczą mapę 5 × 5 i przekształci ją w 25-elementowy wektor gotowy do obsługi przez inną warstwę, na przykład Gęstą do wyprowadzenia prognozy.

Ma to sens w przypadku klasyfikacji obrazu i innych zadań związanych z widzeniem komputerowym.

Model LSTM

Powyższy model CNN jest w stanie obsłużyć tylko jeden obraz, przekształcając go z pikseli wejściowych w wewnętrzną macierz lub reprezentację wektorową.

Musimy powtórzyć tę operację na wielu obrazach i pozwolić LSTM zbudować stan wewnętrzny i zaktualizować wagi przy użyciu BPTT w sekwencji reprezentacji wektorów wewnętrznych obrazów wejściowych.

CNN można naprawić w przypadku użycia istniejącego wstępnie wytrenowanego modelu, takiego jak VGG, do wyodrębniania cech z obrazów. CNN może nie zostać wytrenowany i możemy chcieć go wytrenować przez wsteczną propagację błędu z LSTM w wielu obrazach wejściowych do modelu CNN.

W obu tych przypadkach koncepcyjnie istnieje jeden model CNN i sekwencja modeli LSTM, po jednym dla każdego kroku czasowego. Chcemy zastosować model CNN do każdego obrazu wejściowego i przekazać dane wyjściowe każdego obrazu wejściowego do LSTM jako pojedynczy krok czasowy.

Możemy to osiągnąć, opakowując cały model wejściowy CNN (jedną lub więcej warstw) w warstwę TimeDistributed. Warstwa ta zapewnia pożądany efekt wielokrotnego nakładania tej samej warstwy lub warstw. W tym przypadku zastosowanie go wiele razy do wielu wejściowych kroków czasowych i z kolei zapewnienie sekwencji „interpretacji obrazu” lub „cech obrazu” do modelu LSTM do pracy.

Mamy teraz dwa elementy modelu; połączmy je razem.

Model CNN LSTM

Możemy zdefiniować model CNN LSTM w Keras, najpierw definiując warstwę lub warstwy CNN, opakowując je w warstwę TimeDistributed, a następnie definiując LSTM i warstwy wyjściowe.

Mamy dwa sposoby zdefiniowania modelu, który jest równoważny i różni się jedynie gustem.

Możesz najpierw zdefiniować model CNN, a następnie dodać go do modelu LSTM, opakowując całą sekwencję warstw CNN w warstwę TimeDistributed w następujący sposób:

Alternatywnym i być może łatwiejszym do odczytania podejściem jest zawijanie każdej warstwy w modelu CNN w warstwę TimeDistributed podczas dodawania jej do modelu głównego.

Zaletą tego drugiego podejścia jest to, że wszystkie warstwy pojawiają się w podsumowaniu modelu i jako takie są obecnie preferowane.

Możesz wybrać preferowaną metodę.

Dalsze czytanie

Ta sekcja zawiera więcej zasobów na ten temat, jeśli szukasz głębszych informacji.

Artykuły na CNN LSTM

Keras API

Posty

Podsumowanie

W tym poście odkryłeś architekturę modelu CNN LSTN.

W szczególności nauczyłeś się:

  • O rozwoju architektury modelu CNN LSTM do przewidywania sekwencji.
  • Przykłady typów problemów, do których dostosowany jest model CNN LSTM.
  • Jak zaimplementować architekturę CNN LSTM w Pythonie za pomocą Keras.

Czy masz jakieś pytania?
Zadaj pytania w komentarzach poniżej, a ja postaram się odpowiedzieć.

Opracuj LSTM do prognozowania sekwencji już dziś!

Sieci pamięci długoterminowej z Pythonem

Opracuj własne modele LSTM w kilka minut

... za pomocą zaledwie kilku wierszy kodu w Pythonie

Dowiedz się, jak w moim nowym ebooku:
Sieci pamięci długoterminowej z Pythonem

To zapewnia samouczki do samodzielnej nauki na tematy takie jak:
CNN LSTM, koder-dekoder LSTM, modele generacyjne, przygotowanie danych, prognozowanie i wiele więcej...

Na koniec przenieś powtarzające się sieci neuronowe LSTM do
Twoje projekty prognozowania sekwencji

Pomiń akademików. Tylko wyniki.

Zobacz, co jest w środku

Możesz być również zainteresowany