В чем смысл двумерного шага в свертке?

Я знаю, какое значение имеет шаг, когда это просто целое число (на каком шаге вы должны применить фильтр к изображению). Но как насчет (1, 1) или даже более размерного шага?


person Kenenbek Arzymatov    schedule 15.11.2017    source источник


Ответы (1)


Шаг определяет, как фильтр перемещается по входному изображению (тензору). Ничто не мешает вам двигаться по разным осям по-разному, например, stride=[1, 2] означает перемещение на 1 пиксель за раз по оси 0 и на 2 пикселя за раз по оси 1. Эта конкретная комбинация не распространена, но возможна.

Tensorflow API идет еще дальше и позволяет настраивать шаг для всех осей четырехмерного входного тензора (см. tf.nn.conv2d). При использовании этого API нередко устанавливается strides=[1, 2, 2, 1], что имеет смысл: он должен обрабатывать каждое изображение (первый 1) и каждый входной канал (последний 1), но применять 2x2 шаг пространственного измерения. Что касается свертки, операция применима для любого массива strides, однако не значения одинаково полезны.

Настоятельно рекомендуем это руководство по CS231n для более подробной информации.

person Maxim    schedule 15.11.2017