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