В формуле n' = floor((n-f+2*pad)/stride + 1
вы взяли n' == n == 64
.
Это неверно. n' is equal to n
только когда значение Stride is equal to 1
, но здесь Stride
больше 1 (8
).
Это причина, по которой вы получаете очень высокое значение для Padding
.
Теперь, поскольку ваша цель - найти значение Padding
, у меня есть решение / обходной путь (который может быть не очень оптимизирован).
Первоначально создайте модель с Padding = Same
, как показано ниже:
import tensorflow as tf
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Conv2D(filters = 64, strides = (2,2), kernel_size = (3,3),
input_shape = (64,64,3), padding = 'same'))
print(model.summary())
Краткое описание модели с Padding = Same
показано ниже:
Model: "sequential_12"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_25 (Conv2D) (None, 32, 32, 64) 1792
=================================================================
Total params: 1,792
Trainable params: 1,792
Non-trainable params: 0
Если мы наблюдаем Shape
из Image
, это уменьшено с (64,64)
до (32,32)
, хотя Padding == Same
.
Теперь создайте модель с Padding = Valid
, как показано ниже:
import tensorflow as tf
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Conv2D(filters = 64, strides = (2,2), kernel_size = (3,3),
input_shape = (64,64,3), padding = 'valid'))
print(model.summary())
Резюме для выше Модель показана ниже:
Model: "sequential_11"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_24 (Conv2D) (None, 31, 31, 64) 1792
=================================================================
Total params: 1,792
Trainable params: 1,792
Non-trainable params: 0
Если мы заметим, Shape
из Convolutional Layer
равно (None,31,31,64)
.
Теперь Padding
можно получить по формуле ,
Height with SAME Padding - Height with VALID Padding
или
Width with SAME Padding - Width with VALID Padding
т.е. 32 - 31 = 1
.
Padding в вашем случае, с Input Shape
= (64, 64,3)
, Filter Size = 8
, Strides = 8
равно 1 т.е.
Input
равно Wi-Fi с заполнением th 1 строка и 1 столбец нулей .