Я изучаю входы и выходы Кераса.Итак, в этом аспекте я проверял функцию model.summary()
.
Я использовал простой пример классификации изображений , предоставленный самим Keras, и загружал различные предоставленные предварительно обученные модели (Xception, VGG16 и т. Д.).
Я проверил архитектуру каждой модели, используя model.summary()
, как упоминалось.Затем я заметил, что по какой-то причине столбец Connected to
(то есть четвертый столбец) не присутствует в каждой сводке модели.Например, для MobileNetV2
я получаю (показаны только первые несколько строк):
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_1 (InputLayer) (None, 224, 224, 3) 0
__________________________________________________________________________________________________
Conv1_pad (ZeroPadding2D) (None, 225, 225, 3) 0 input_1[0][0]
__________________________________________________________________________________________________
Conv1 (Conv2D) (None, 112, 112, 32) 864 Conv1_pad[0][0]
, но для MobileNet
я получаю:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 224, 224, 3) 0
_________________________________________________________________
conv1_pad (ZeroPadding2D) (None, 225, 225, 3) 0
_________________________________________________________________
conv1 (Conv2D) (None, 112, 112, 32) 864
Этот вывод выполняется безлюбые дополнительные действия после загрузки модели (без обучения, умозаключения и т. д.).
Это кажется странным, и я не уверен, что здесь происходит.Например, при создании этой простой модели из этого вопроса здесь (до части model0.fit(...)
) и выполнение model0.summary()
дает мне сводку без столбца Connected to
, также противоречащую опубликованной сводке в этом вопросе.
Итак, это изменение на выходе?Что за сделка с model.summary()
?Имеем ли мы некоторый контроль над выходом (хотя примеры выше не подразумевают этого)?Или вывод связан с тем, как была структурирована модель?
Редактировать:
Я добавил (тривиальный) код, используемый для воспроизведения сводки обеих моделей, как было запрошено в комментарии.
from keras.applications.mobilenet_v2 import MobileNetV2
from keras.applications.mobilenet import MobileNet
model1 = MobileNetV2(weights='imagenet')
print(model1.summary())
model2 = MobileNet(weights='imagenet')
print(model2.summary())
Кроме того, моя система использует Keras 2.2.4, Tensorflow 1.12.0 и Ubuntu 16.04, если эта информация как-то полезна.