Как я могу создать пользовательское соединение между двумя разными слоями keras в архитектуре LeNet5? - PullRequest
0 голосов
/ 23 декабря 2018

Я работаю над архитектурой LeNet5 .Я хочу реализовать пользовательское соединение между слоями C3 и S2, как объяснено здесь .Как мне определить мою модель в « CODE-1 » и « CODE-2 », если я хочу реализовать пользовательские соединения, как объяснено здесь .Сколько фильтров я должен взять в " CODE-2 ".Любая помощь будет оценена.

Выходные данные s2 равны 14 * 14 * 6, и к этим 6 картам характеристик необходимо применить 16 фильтров.Однако вместо всех 6 карт S2 для 16 нейронов c3 большинство нейронов в картах слоя C3 связаны с нейронами только в трех или четырех картах S2.Более подробную информацию можно найти в изображениях 2 и 3. Слой c3 с 16 картами объектов размером 5 × 5 и шагом 1. В этом слое только 10 из 16 карт объектов связаны с 6 картами объектов s2.

Если вы заметили изображение 3, нейрон 0 c3 связан с картами характеристик 0, 1 и 2 s2.Как реализовать этот вид соединений.

Мой код выглядит примерно так:

from keras.models import Model
from tensorflow.keras.layers import Conv2D, Input, Concatenate, Lambda

CODE-1

inputTensor = Input(shape=(14, 14, 6))
group0 = Lambda(lambda x: x[:,:,:3], output_shape=((10, 10, 1)))(inputTensor)
group1 = Lambda(lambda x: x[:,:,1:4], output_shape=((10, 10, 1)))(inputTensor)
group2 = Lambda(lambda x: x[:,:,2:5], output_shape=((10, 10, 1)))(inputTensor)
group3 = Lambda(lambda x: x[:,:,3:6], output_shape=((10, 10, 1)))(inputTensor)
# all 16 layers of c3 (of the Custom Connections image)

CODE-2

conv_group0 = Conv2D(1, kernel_size=[5,5], strides=(stride,stride), padding="valid", activation = 'tanh')(group0)
conv_group1 = Conv2D(1, kernel_size=[5,5], strides=(stride,stride), padding="valid", activation = 'tanh')(group1)
conv_group2 = Conv2D(1, kernel_size=[5,5], strides=(stride,stride), padding="valid", activation = 'tanh')(group2)
#all 16 layers convolution

output_layer = Concatenate()([conv_group0,conv_group1,conv_group2,conv_group3,conv_group4,conv_group5,conv_group6,conv_group7,
                         conv_group8,conv_group9,conv_group10,conv_group11,conv_group12,conv_group13,conv_group14,conv_group15])
Mymodel = Model(inputTensor,output_layer)
...