#python #tensorflow #keras
Вопрос:
Я установил заполнение на ТО ЖЕ или то же самое, но выход все равно уменьшается, что тогда не так? 😅, как я понимаю, согласно официальному документу, размер вывода должен быть таким же, как и размер ввода, я забыл, что важно?
import tensorflow as tf
x = tf.keras.Input([120, 120, 3])
conv = tf.keras.layers.Conv2D(filters=3, kernel_size=(3, 3), strides=(2, 2), padding="SAME")(x)
conv = tf.keras.layers.Conv2D(filters=3, kernel_size=(3, 3), strides=(2, 2), padding="SAME")(conv)
model = tf.keras.Model(inputs=[x], outputs=[conv])
model.summary()
image_batch = tf.random.normal(shape=[10, 120, 120, 3])
y_pred = model(image_batch)
print(y_pred.shape)
Выход
odel: "model_7"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_8 (InputLayer) [(None, 120, 120, 3)] 0
_________________________________________________________________
conv2d_11 (Conv2D) (None, 60, 60, 3) 84
_________________________________________________________________
conv2d_12 (Conv2D) (None, 30, 30, 3) 84
=================================================================
Total params: 168
Trainable params: 168
Non-trainable params: 0
_________________________________________________________________
(10, 30, 30, 3)
Комментарии:
1. Да, вы забыли о шагах.
2. @NanoBit Почему бы и нет? это выглядит правильно, он вводит данные на первый уровень conv.
3. @NanoBit То, что ты написал, не имело для меня никакого смысла.
Ответ №1:
Это из-за strides=(2, 2)
. Он пропускает шаг во время операции свертки и, таким образом, уменьшает h amp; w в 2 раза на каждом сверточном слое.
Если вы установите strides=(1, 1)
его, он будет иметь ту же выходную форму.
Комментарии:
1. спасибо @Николас Жерве, и это означает, что заполнение=»то же самое» несовместимо, по крайней мере, это не «то же самое», что описывает? Или я пропустил некоторые уведомления из официального документа?
2. «действительный» означает отсутствие заполнения. «то же самое» приводит к заполнению нулями равномерно слева/справа или вверх/вниз от входных данных, так что выходные данные имеют тот же размер высоты/ширины, что и входные данные.
3.
padding="SAME"
не будет корректировать эффект шагов