Передать правильный размер нейронов на конвой слой - PullRequest
0 голосов
/ 13 апреля 2020

Я начал разрабатывать F CNet на основе этого рисунка ниже: enter image description here

Размер изображения входного слоя равен (500 500,3), и первый convLayer имеет (698 698,3). Написание кода для проверки я получил (498,498,3). Как я могу продолжить это?

Следуйте части моего кода, реализованной с использованием кераса. Это только первый блок свертки.

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()

Здесь выводится сводка модели.

enter image description here

1 Ответ

1 голос
/ 13 апреля 2020

В этом случае они выполняют заполнение нулями, чтобы соответствовать сверточному слою.

Попробуйте:

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 = ' то же самое 'снова

...