Когда мне нужно сделать шаг в измерении пакета или канала для свертки TensorFlow?

Тензорный поток реализует базовую операцию свертки с помощью tf .nn.conv2d.

Меня особенно интересует параметр strides, который позволяет вам установить шаг фильтра свертки - насколько далеко по изображению вы смещаете фильтр каждый раз.

Пример, приведенный в одном из ранних руководств, с шагом изображения 1 в каждом направление, это

def conv2d(x, W):
  return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')

Подробнее о массиве strides можно прочитать в связанных документах:

Подробно, с форматом NHWC по умолчанию ...

Должны быть шаги [0] = шаги [3] = 1. Для наиболее распространенного случая одинаковых горизонтальных и вершинных шагов strides = [1, stride, stride, 1].

Обратите внимание, что порядок шагов соответствует порядку ввода: [batch, height, width, channels] в формате NHWC.

Очевидно, иметь шаг не 1 для batch и channels не имеет смысла, верно? (ваш фильтр всегда должен проходить через каждую партию и каждый канал)

Но почему тогда вообще можно поставить что-то кроме 1 в strides[0] и strides[3]? (где это вариант касается того факта, что вы можете поместить что-то, кроме 1, в массив python, который вы передаете, игнорируя приведенную выше цитату из документации)

Есть ли ситуация, когда у меня был бы не один шаг для измерения batch или channels, например

tf.nn.conv2d(x, W, strides=[2, 1, 1, 2], padding='SAME')

Если да, то что этот пример вообще означал бы с точки зрения операции свертки?


person snickers10m    schedule 24.09.2017    source источник


Ответы (1)


Может возникнуть ситуация, когда вы отправляете видео по частям. Это означает, что ваш пакет будет последовательностью кадров. Предполагая, что близкие кадры должны быть очень похожими, мы можем опустить некоторые из них, увеличив шаг пакета. Насколько я понимаю. ИДК о продвижении по каналу, хотя

person Mitchy    schedule 03.10.2018