Как понять модель свертки - PullRequest
0 голосов
/ 31 октября 2019

Я впервые использую keras.sequential для создания модели свертки. Ниже приведен код, и я не понимаю, что означает сводная часть.

from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout

from keras.models import Sequential
from keras import optimizers

model = Sequential()

model.add(Conv2D(16, kernel_size=(3, 3), activation='relu', 
                 input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dense(1, activation='sigmoid'))


model.compile(loss='binary_crossentropy',
              optimizer=optimizers.RMSprop(),
              metrics=['accuracy'])
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_1 (Conv2D)            (None, 148, 148, 16)      448       
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 74, 74, 16)        0         
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 72, 72, 64)        9280      
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 36, 36, 64)        0         
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 34, 34, 128)       73856     
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 17, 17, 128)       0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 36992)             0         
_________________________________________________________________
dense_1 (Dense)              (None, 512)               18940416  
_________________________________________________________________
dense_2 (Dense)              (None, 1)                 513       
=================================================================
Total params: 19,024,513
Trainable params: 19,024,513
Non-trainable params: 0

1 Ответ

1 голос
/ 01 ноября 2019

model.summary () предоставляет вам информацию о выходной форме и количестве параметров для каждого слоя вашей модели. Например, первый слой «conv2d_1» соответствует первому слою в вашем коде Python

model.add(Conv2D(16, kernel_size=(3, 3), activation='relu', 
                 input_shape=input_shape))

Он сообщает, что выходные данные этого слоя имеют форму (None, 148, 148, 16). «Нет» относится к измерению образца / партии, которое обычно не указывается в моделях Keras. Он автоматически выводится из фактических входных данных. В остальной части фигуры указано, что у вас есть данные 148x148x16, которые вы можете рассматривать как стек из 16 изображений размером 148x148. «16» происходит от первого аргумента в

Conv2D(16,...

. Параметры - это количество весов в слое, которое, я считаю, можно обучить. Это говорит вам о сложности модели и о том, сколько времени потребуется для обучения в относительном порядке - больше параметров, больше обработки и т. Д.

Остальные строки имеют аналогичный анализ. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...