Керас выпуск CNN - PullRequest
       0

Керас выпуск CNN

0 голосов
/ 14 февраля 2020

Я пытаюсь написать сиамскую сеть, используя Negative Sampling, код с 20 примерами (включая положительный и отрицательный). Каждый пример включает 2 изображения (x1, x2) и вывод, указывающий, являются ли изображения одинаковыми или нет

image1           image1        1
image1           image2        0

Для этого мне интересно получить только последний слой, который является слоем Dense () в Keras, отдельно X1 и X2.

Форма X1 равна 20,28,28 , 1 и X2 - 20,28,28,1. Оба типа имеют тип numpy .ndarray

Но когда я применяю модель CNN, выдается следующая ошибка.

" Ошибка типа: добавленный слой должен быть экземпляром класса Layer. Найдено: (28, 28, 1)

См. Код python ниже

model = Sequential([(Image1[0].shape),
            Conv2D(16,kernel_size=(3,3),strides=[1,1],padding='same',kernel_initializer=keras.initializers.glorot_uniform(),name='conv1'),
            Activation('relu'),
            MaxPool2D(pool_size=(2, 2)),
            Conv2D(32,kernel_size=(3,3),strides=[2,2],padding='same',kernel_initializer=keras.initializers.glorot_uniform(),name='conv2'),
            Activation('relu'),
            Conv2D(64,kernel_size=(3,3),strides=[2,2],padding='same',kernel_initializer=keras.initializers.glorot_uniform(),name='conv3'),
            Activation('relu'),
            MaxPool2D(pool_size=(2, 2)),
            Flatten(),
            Dense(20)
          ])

Может кто-нибудь помочь мне, как исправить эту ошибку?

Спасибо Sachin

1 Ответ

0 голосов
/ 14 февраля 2020

Первый слой модели должен указывать форму изображений, которые вы собираетесь подавать. В вашем случае вы добавляете форму изображения в качестве слоя.

Посмотрите, как это сделать:

IM_WIDTH = 128
IM_HEIGHT = 128

model = Sequential(
Conv2D(16, input_size=(IM_HEIGHT, IM_WIDTH, 3), kernel_size=(3,3),strides=[1,1],padding='same',kernel_initializer=keras.initializers.glorot_uniform(),name='conv1'),
            Activation('relu'),
            MaxPool2D(pool_size=(2, 2)),
            Conv2D(32,kernel_size=(3,3),strides=[2,2],padding='same',kernel_initializer=keras.initializers.glorot_uniform(),name='conv2'),
            Activation('relu'),
            Conv2D(64,kernel_size=(3,3),strides=[2,2],padding='same',kernel_initializer=keras.initializers.glorot_uniform(),name='conv3'),
            Activation('relu'),
            MaxPool2D(pool_size=(2, 2)),
            Flatten(),
            Dense(20)
          ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...