在 conv 层上传递正确大小的神经元

Pass the correct size of neurons on conv layer

我已经开始基于下图开发FCNet:

输入层图像大小为(500,500,3),第一个convLayer为(698,698,3)。编写代码来检查我收到了 (498,498,3)。我该如何处理?

按照我使用keras实现的代码部分进行操作。 这只是第一个卷积块。

from keras.models import *
from keras.layers import *
from keras.optimizers import *

def network(input_size=(IMAGE_SIZE,IMAGE_SIZE,3)):
    inputs = Input(input_size)
    conv1 = Conv2D(64, 3,  kernel_initializer='he_normal', activation='relu',padding='valid')(inputs)
    conv1 = Conv2D(64, 3,  kernel_initializer='he_normal', activation='relu',padding='valid')(conv1)
    pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)

    model = Model(input=inputs, output=pool1)


    model.summary()

这是模型摘要的输出。

在这种情况下,他们正在执行零填充以适应卷积层。

试试这个:

IMAGE_SIZE=500

def network(input_size=(IMAGE_SIZE,IMAGE_SIZE,3)):
    inputs = Input(input_size)
    zero = ZeroPadding2D(padding=(100, 100), data_format=None)(inputs)
    conv1 = Conv2D(64, 3,  kernel_initializer='he_normal', activation='relu')(zero)
    conv1 = Conv2D(64, 3,  kernel_initializer='he_normal', 
    activation='relu',padding='same')(conv1)
    pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)
    model = Model(input=inputs, output=pool1)
    model.summary()

所以在下一层你可以再次使用padding='same'