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

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

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

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

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

Массив шагов объясняется более подробно в связанных документах:

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

Должен иметь шаги [0] = шаги [3] = 1. Для наиболее распространенного случая одинаковых горизонтальных и вершинных шагов, шаги = [1, шаг, шаг, 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')

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

1 ответ

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

Другие вопросы по тегам