Jaka jest koncepcja wąskich gardeł Tensorflow?


Odpowiedzi:


21

Wąskim gardłem w sieci neuronowej jest tylko warstwa z mniejszą liczbą neuronów niż warstwa poniżej lub powyżej. Posiadanie takiej warstwy zachęca sieć do kompresji reprezentacji funkcji w celu najlepszego dopasowania do dostępnej przestrzeni, aby uzyskać najlepszą stratę podczas treningu.

W sieci CNN (takiej jak sieć Incepcji Google) dodaje się warstwy wąskiego gardła, aby zmniejszyć liczbę map obiektów (zwanych również „kanałami”) w sieci, które w przeciwnym razie zwykle zwiększają się w każdej warstwie. Osiąga się to poprzez zastosowanie zwojów 1x1 z mniejszą liczbą kanałów wyjściowych niż kanałów wejściowych.

Zwykle nie oblicza się wag bezpośrednio dla warstw wąskiego gardła, proces treningowy radzi sobie z tym tak, jak w przypadku wszystkich innych wag. Wybór dobrego rozmiaru warstwy wąskiego gardła jest czymś, co trzeba odgadnąć, a następnie poeksperymentować, aby znaleźć dobrze działające architektury sieciowe. Zazwyczaj celem jest znalezienie sieci, która dobrze uogólnia nowe obrazy, a warstwy wąskiego gardła pomagają poprzez zmniejszenie liczby parametrów w sieci, jednocześnie pozwalając jej być głębokim i reprezentować wiele map obiektów.


Cześć Neil! Myślę, że mam bardzo proste pytanie, ale nadal jestem zdezorientowany. ai.stackexchange.com/questions/21172/... Czy masz czas, aby udzielić mi odpowiedzi?
jgauth

@jgauth: Subskrybuję kanał RSS wszystkich pytań na tej stronie i staram się odpowiadać na wszystkie pytania, które widzę tam, gdzie uważam, że mogę. Nie ma potrzeby kontaktowania się ze mną bezpośrednio w celu uzyskania pytania. Jeśli chcesz się ze mną skontaktować w sprawie konkretnego problemu, najlepiej zrobić to na powiązane pytanie lub na czacie na stronie, jeśli nie ma takiego.
Neil Slater

8

Wyobraź sobie, że chcesz ponownie obliczyć ostatnią warstwę wstępnie wyszkolonego modelu:

Input->[Freezed-Layers]->[Last-Layer-To-Re-Compute]->Output

Aby trenować [Last-Layer-To-Re-Compute] , musisz wielokrotnie oceniać wyniki [Freezed-Layers] dla danych wejściowych. Aby zaoszczędzić czas, możesz wyliczyć te wyjścia tylko raz .

Input#1->[Freezed-Layers]->Bottleneck-Features-Of-Input#1

Następnie przechowujesz wszystkie funkcje „Wąskie gardło” # i i bezpośrednio używasz ich do szkolenia [Last-Layer-To-Re-Compute].

Objaśnienia funkcji „cache_bottlenecks” w przykładzie „image_retraining”:

Ponieważ prawdopodobnie będziemy czytać ten sam obraz wiele razy (jeśli nie zostaną zastosowane zniekształcenia podczas treningu), może to znacznie przyspieszyć, jeśli obliczymy wartości warstwy wąskiego gardła raz dla każdego obrazu podczas wstępnego przetwarzania, a następnie po prostu odczytamy te buforowane wartości wielokrotnie podczas treningu.


5

Wąskie gardło Tensorflow to ostatnia faza przed prosessem przed rozpoczęciem faktycznego szkolenia z rozpoznawaniem danych. Jest to faza, w której z każdego obrazu treningowego tworzona jest struktura danych, w której może się odbyć końcowa faza szkolenia i odróżniać obraz od każdego innego obrazu wykorzystywanego w materiale szkoleniowym. Trochę jak odcisk palca obrazu.

Jest zaangażowany w polecenie przekwalifikowania i, jak sama nazwa wskazuje, jest głównym odbiorcą czasowym wykonania polecenia. Ilość tego materiału treningowego może być zagrożona, jeśli to wąskie gardło wydaje się zbyt czasochłonne.

Ponieważ jest to polecenie wiersza polecenia, nie znam dokładnego algorytmu. Algorytm jest jawny w kodzie w Github, ale podobno jest tak skomplikowany (z definicji czas wykonania jest bardzo długi), że uważam, że nie mogę tego zapisać w odpowiedzi tego typu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.