Об'єднання об'єднаного та згорткового ковзання просувають "вікно" по вхідному тензору. Використовуючи tf.nn.conv2d
приклад: Якщо вхідний тензор має 4 розміри:, [batch, height, width, channels]
згортка працює на 2D вікні height, width
розмірів.
strides
визначає, на скільки зміщується вікно в кожному з вимірів. Типове використання встановлює перший (пакетний) і останній (глибинний) крок на 1.
Давайте скористаємось конкретним прикладом: Запуск 2-d згортки над вхідним зображенням сірого масштабу 32x32. Я кажу в масштабах сірого, тому що тоді вхідне зображення має глибину = 1, що допомагає зробити його простим. Нехай це зображення виглядає так:
00 01 02 03 04 ...
10 11 12 13 14 ...
20 21 22 23 24 ...
30 31 32 33 34 ...
...
Давайте запустимо вікно згортання 2х2 над одним прикладом (розмір партії = 1). Ми дамо згортці вихідний канал глибиною 8.
Вхід до згортки має shape=[1, 32, 32, 1]
.
Якщо ви вкажете strides=[1,1,1,1]
з padding=SAME
, тоді вихід фільтра буде [1, 32, 32, 8].
Спочатку фільтр створить вихід для:
F(00 01
10 11)
А потім для:
F(01 02
11 12)
і так далі. Потім він перейде до другого ряду, обчислюючи:
F(10, 11
20, 21)
тоді
F(11, 12
21, 22)
Якщо вказати крок [1, 2, 2, 1], він не виконає перекриття вікон. Він буде обчислювати:
F(00, 01
10, 11)
і потім
F(02, 03
12, 13)
Крок працює аналогічно операторам об'єднання.
Питання 2: Чому кроки [1, x, y, 1] для конвентів
Перший 1 - це партія. Зазвичай ви не хочете пропускати приклади у вашій партії, або ви не повинні включати їх у першу чергу. :)
Останнє 1 - це глибина згортання: зазвичай не потрібно пропускати входи з тієї ж причини.
Оператор conv2d є загальнішим, тому ви можете створити згортки, які розсувають вікно за іншими параметрами, але це не типове використання у конвєнці. Типовим є використання їх просторово.
Чому переформатуйте на -1 -1 - це заповнювач, який говорить: "регулюйте за необхідності відповідно до розміру, необхідного для повного тензора". Це спосіб зробити код незалежним від розміру вхідної партії, так що ви можете змінити конвеєр і не потрібно змінювати розмір партії скрізь у коді.