Как происходит матричное умножение 3d-ядра и 3d-изображения (скажем, RGB) для получения 2d-вывода? - PullRequest
1 голос
/ 28 апреля 2019

Я изучал архитектуру нейронной сети свертки.Я ужасно запутался в той части, где трехмерное ядро ​​воздействует на входное трехмерное изображение (ну, это 4d, учитывая, что у нас есть стек этих изображений, но просто для того, чтобы объяснить немного проще).Я знаю, что в интернете полно таких вещей.но я не могу найти точный ответ на эту часть умножения матриц.

Чтобы всем было проще понять, может ли кто-нибудь показать мне фактическое умножение того, как свертка матрицы (5,5,3) (наше ядро) и (28,28,3) матрицы (наше изображение RGB)), выводя 2d массив.

Также, пожалуйста, покажите (с подробным изображением), как эти многочисленные двумерные массивы сглаживаются и подключаются к одному полностью подключенному слою.

Я знаю, что последний слой объединенных двухмерных массивов сглажен.но, поскольку существует около 64 2-мерных массивов (только рассмотрим), .. поэтому даже если мы сгладим каждый из них, у нас будет 64 сглаженных 1D-массива.Итак, как это в конечном итоге подключается к следующему полностью подключенному слою?(Фото пожалуйста)

1 Ответ

0 голосов
/ 28 апреля 2019

У вас есть несколько вопросов в одном.Я отвечу о том, «как происходит свертка».Краткий ответ: это не умножение матриц.

Шаг 1) Вы скользите окном размером (5,5,3) по своему RGB-изображению, вырезая субизображения такого размера.Между прочим, эти подизображения имеют точно такое же измерение, как и размерность ядра.

Шаг 2) Вы умножаете каждое значение подизображения на значения компонента свертки в отношении.Вывод этого снова (5,5,3) подизображения «масштабируется» по значениям ядра.

Шаг 3) Вы добавляете все значения «масштабирования» (5,5,3)подизображение вместе (эффективно сжимая размеры) в одно значение - это наш конечный результат.

...