在 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'
我已经开始基于下图开发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'