padding='Same'
в Keras означает, что при необходимости добавляются отступы, чтобы компенсировать перекрытия, когда размер входных данных и размер ядра не полностью совпадают.
Пример заполнения = 'Same':
# Importing dependency
import keras
from keras.models import Sequential
from keras.layers import Conv2D
# Create a sequential model
model = Sequential()
# Convolutional Layer
model.add(Conv2D(filters=24, input_shape=(5,5,1), kernel_size=(2,2), strides =(2,2) ,padding='Same'))
# Model Summary
model.summary()
Вывод кода -
Model: "sequential_20"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_28 (Conv2D) (None, 3, 3, 24) 120
=================================================================
Total params: 120
Trainable params: 120
Non-trainable params: 0
_________________________________________________________________
Графическое представление: На рисунке ниже показано, как заполнение для ввода (input_shape = (5,5,1), kernel_size = (2,2), шаги = (2,2)) при заполнении = 'Same' .
![enter image description here](https://i.stack.imgur.com/N1ojK.png)
---------------------------- -------------------------------------------------- ------------------------------------
padding='Valid'
в керасе означает отсутствие заполнения
Пример заполнения = 'Valid': Использовали тот же ввод для Conv2D, который мы использовали выше для заполнения = 'Same' .ie (input_shape = (5,5,1 ), kernel_size = (2,2), шаги = (2,2))
# Importing dependency
import keras
from keras.models import Sequential
from keras.layers import Conv2D
# Create a sequential model
model = Sequential()
# Convolutional Layer
model.add(Conv2D(filters=24, input_shape=(5,5,1), kernel_size=(2,2), strides =(2,2) ,padding='Valid'))
# Model Summary
model.summary()
Вывод кода -
Model: "sequential_21"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_29 (Conv2D) (None, 2, 2, 24) 120
=================================================================
Total params: 120
Trainable params: 120
Non-trainable params: 0
_________________________________________________________________
Графическое представление: На рисунке ниже показано, что для ввода не добавляются отступы (input_shape = (5,5,1), kernel_size = (2,2), шаги = (2,2)) при заполнении = 'Valid' , ![enter image description here](https://i.stack.imgur.com/IRGn0.png)
----------------------------------- -------------------------------------------------- -----------------------------
Теперь давайте попробуем тот же код, который мы использовали для padding='Valid'
для ввода (input_shape = (6,6,1), kernel_size = (2,2), шаги = (2,2)). Здесь padding='Valid'
должен вести себя так же, как padding='Same'
.
Код -
# Importing dependency
import keras
from keras.models import Sequential
from keras.layers import Conv2D
# Create a sequential model
model = Sequential()
# Convolutional Layer
model.add(Conv2D(filters=24, input_shape=(6,6,1), kernel_size=(2,2), strides =(2,2) ,padding='Valid'))
# Model Summary
model.summary()
Вывод кода -
Model: "sequential_22"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_30 (Conv2D) (None, 3, 3, 24) 120
=================================================================
Total params: 120
Trainable params: 120
Non-trainable params: 0
_________________________________________________________________