Tensorflow имеет официальную реализацию реснета в github. И он использует фиксированный отступ вместо обычного tf.layers.conv2d.
Что-то вроде этого:
def conv2d_fixed_padding(inputs, filters, kernel_size, strides, data_format):
"""Strided 2-D convolution with explicit padding."""
# The padding is consistent and is based only on `kernel_size`, not on the
# dimensions of `inputs` (as opposed to using `tf.layers.conv2d` alone).
if strides > 1:
inputs = fixed_padding(inputs, kernel_size, data_format)
return tf.layers.conv2d(
inputs=inputs, filters=filters, kernel_size=kernel_size, strides=strides,
padding=('SAME' if strides == 1 else 'VALID'), use_bias=False,
kernel_initializer=tf.variance_scaling_initializer(),
data_format=data_format)
Какова цель этого? Мы можем получить карту функций 16x16, если введем изображение размером 32x32 и используем метод заполнения tf.layer.conv2d, установив значение SAME, шаг 2. Но в приведенном выше коде он добавит ноль с обеих сторон изображения, а затем использует заполнение. метод ДЕЙСТВИТЕЛЬНЫЙ.