#python #tensorflow #keras #deep-learning #neural-network
#python #тензорный поток #keras #глубокое обучение #нейронная сеть
Вопрос:
У меня есть очень простая модель в keras. Я определил функцию для получения сети vgg19, а затем соединил ее с плоским слоем, а затем с плотным слоем. Когда я печатаю сводку модели, она не отображает каждый слой в сети vgg19. Есть ли какой-либо способ показать это без изменения функции в vgg19? Приветствуются любые советы.
import keras
from keras.layers import Input, Dense, Flatten
from keras.models import Model
input = Input(shape=(32,32,3), name="main_input")
def Model_vgg19(input_shape,input):
vgg19_model = keras.applications.VGG19(
input_shape=(32,32,3),
weights='imagenet',
include_top=False
)(input)
return vgg19_model
model = Model_vgg19((32,32,3),input)
model = Flatten()(model)
model = Dense(10, activation='relu', name='features_inc')(model)
model = Model(input, model)
model.summary()
Результат выглядит так
Model: "model_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
main_input (InputLayer) (None, 32, 32, 3) 0
_________________________________________________________________
vgg19 (Model) (None, 1, 1, 512) 20024384
_________________________________________________________________
flatten_1 (Flatten) (None, 512) 0
_________________________________________________________________
features_inc (Dense) (None, 10) 5130
=================================================================
Total params: 20,029,514
Trainable params: 20,029,514
Non-trainable params: 0
_________________________________________________________________
Process finished with exit code 0
Комментарии:
1. с помощью модели. слои [1].сводка () вы можете распечатать сводку vgg
Ответ №1:
Вы можете использовать метод get_layer(имя, индекс) для вашего типа модели. вы можете найти более подробную информацию об этом здесь https://www.tensorflow.org/api_docs/python/tf/keras/Model#get_layer
для вашего кода вы можете использовать это:
model.get_layer(index=1).summary()
С помощью этого вы получите сводную информацию о модели VGG19 (которая имеет индекс 1 в вашей модели). Удачи!
Комментарии:
1. Вы также можете использовать имя слоя,
model.get_layer('vgg19').summary()
Ответ №2:
вы можете попробовать
vgg19_model = keras.applications.VGG19(
input_shape=(32,32,3),
weights='imagenet',
include_top=False
)
x=vgg19_model.output
x=Flatten()(x)
# use `output =` instead `output == `
output = Dense(10, activation='relu', name='features_inc')(x)
model=Model(inputs=vgg19_model.input, outputs=output)
Просто примечание. Модель VGG имеет пул параметров. Если вы установите pooling=’max’, выходной слой будет максимальным объединяющим слоем, который вы можете поместить непосредственно в плотный слой, поэтому вам не нужно включать слой flatten .