Miałem na myśli to samo pytanie, kiedy czytasz tę białą księgę i zasoby, o których wspomniałeś, pomogły mi wymyślić wdrożenie.
W podanym kodzie pochodni jest napisane:
--[[ DepthConcat ]]--
-- Concatenates the output of Convolutions along the depth dimension
-- (nOutputFrame). This is used to implement the DepthConcat layer
-- of the Going deeper with convolutions paper :
Słowo „głębokość” w głębokim uczeniu się jest trochę niejednoznaczne. Na szczęście ta odpowiedź SO zapewnia pewną jasność:
W Deep Neural Networks głębokość odnosi się do głębokości sieci, ale w tym kontekście głębokość jest używana do rozpoznawania wizualnego i przekłada się na trzeci wymiar obrazu.
W tym przypadku masz obraz, a rozmiar tego wejścia to 32x32x3, czyli (szerokość, wysokość, głębokość). Sieć neuronowa powinna być w stanie uczyć się na podstawie tych parametrów, ponieważ głębokość przekłada się na różne kanały obrazów treningowych.
DepthConcat łączy więc tensory wzdłuż wymiaru głębokości, który jest ostatnim wymiarem tensora, a w tym przypadku trzecim wymiarem tensora 3D.
DepthConcat musi sprawić, by tensory były takie same we wszystkich wymiarach, ale w wymiarze głębokości, jak mówi kod palnika :
-- The normal Concat Module can't be used since the spatial dimensions
-- of tensors to be concatenated may have different values. To deal with
-- this, we select the largest spatial dimensions and add zero-padding
-- around the smaller dimensions.
na przykład
A = tensor of size (14, 14, 2)
B = tensor of size (16, 16, 3)
result = DepthConcat([A, B])
where result with have a height of 16, a width of 16 and a depth of 5 (2 + 3).
Na powyższym schemacie widzimy obraz tensora wyniku DepthConcat, gdzie biały obszar jest wypełnieniem zerowym, czerwony to tensor A, a zielony to tensor B.
Oto pseudo kod dla DepthConcat w tym przykładzie:
- Spójrz na tensor A i tensor B i znajdź największe wymiary przestrzenne, którymi w tym przypadku byłyby 16 szerokości i 16 wysokości tensora B. Ponieważ tensor A jest zbyt mały i nie odpowiada wymiarom przestrzennym tensora B, należy go wyściełać.
- Wypełnij wymiary przestrzenne tensora A zerami, dodając zera do pierwszego i drugiego wymiaru, tworząc rozmiar tensora A (16, 16, 2).
- Połączony tensor A z tensorem B wzdłuż wymiaru głębokości (3.).
Mam nadzieję, że pomoże to komuś, kto myśli to samo pytanie, czytając tę białą księgę.