Надеюсь, вы знакомы с керасом.Теперь посмотрите на ваше изображение 16 * 16 * 1.Изображение передается в сверточный слой керас, но сначала мы должны создать модель.как model=Sequential()
этим мы можем получить экземпляр модели keras.Теперь мы дадим наш сверточный слой с нашими параметрами, такими как
model.add(Conv2D(20,(2,2),padding="same"))
, теперь мы добавляем 20 фильтров к нашему изображению.и наше изображение становится 16 * 16 * 20, теперь для большего количества лучших функций мы добавляем больше конвективных слоев, таких как
model.add(Conv2D(32,(2,2),padding="same"))
, теперь мы добавляем к вашему изображению 32 фильтра, после этого ваше изображение будет иметь размер 16 * 16 * 32.
не забыл поставить активацию после конвоя.Если вы новичок, вам следует изучить возможности активации, оптимизации и потери сети.это основная часть нейронных сетей.
Теперь пришло время перейти к полностью связанному слою.Сначала нам нужно сгладить наше изображение, потому что полностью связанный слой работает только на 2d векторах (no_of_ex, image_dim), в вашем случае уменьшение imgae после применения сглаживания будет (16 * 16 * 32)
model.add(Flatten())
после растягиванияimage Ваша сеть передаст ее полностью соединенным слоям
model.add(Dense(32))
model.add(Activation("relu"))
model.add(Dense(8))
model.add(Activation("relu"))
model.add(Dense(2))
, потому что у вас есть проблема двоичной классификации, если вам нужно классифицировать 3 класса, тогда как последний слой будет иметь 3 нейрона, если вам нужно классифицировать 10 примеров, чемваш последний плотный слой будет иметь 10 нейронов.
model.add(Activation("softmax"))
model.compile(loss='binary_crossentropy',
optimizer=Adam(),
metrics=['accuracy'])
return model
после этого вам нужно будет соответствовать этой модели.
estimator=model()
estimator.fit(X_train,y_train)
полный код:
def model (classes):
model=Sequential()
# conv2d set =====> Conv2d====>relu=====>MaxPooling
model.add(Conv2D(20,(5,5),padding="same"))
model.add(Activation("relu"))
model.add(Conv2D(32,(5,5),padding="same"))
model.add(Activation("relu"))
model.add(Flatten())
model.add(Dense(32))
model.add(Activation("relu"))
model.add(Dense(8))
model.add(Activation("relu"))
model.add(Dense(2))
#now adding Softmax Classifer because we want to classify 10 class
model.add(Dense(classes))
model.add(Activation("softmax"))
model.compile(loss='categorical_crossentropy',
optimizer=Adam(lr=0.0001, decay=1e-6),
metrics=['accuracy'])
return model
Вы можете получить помощь от этого кернала