gpt4 book ai didi

keras - 在 Keras 中,如何获取与我的模型中包含的 "Model"对象关联的层名称?

转载 作者:行者123 更新时间:2023-12-03 21:16:38 24 4
gpt4 key购买 nike

我在初始基础上使用 VGG16 网络构建了一个 Sequential 模型,例如:

from keras.applications import VGG16
conv_base = VGG16(weights='imagenet',
# do not include the top, fully-connected Dense layers
include_top=False,
input_shape=(150, 150, 3))

from keras import models
from keras import layers

model = models.Sequential()
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(256, activation='relu'))
# the 3 corresponds to the three output classes
model.add(layers.Dense(3, activation='sigmoid'))

我的模型看起来像这样:

model.summary()


Layer (type)                 Output Shape              Param #   
=================================================================
vgg16 (Model) (None, 4, 4, 512) 14714688
_________________________________________________________________
flatten_1 (Flatten) (None, 8192) 0
_________________________________________________________________
dense_7 (Dense) (None, 256) 2097408
_________________________________________________________________
dense_8 (Dense) (None, 3) 771
=================================================================
Total params: 16,812,867
Trainable params: 16,812,867
Non-trainable params: 0
_________________________________________________________________


现在,我想获取与我的网络的 vgg16 模型部分相关联的层名称。 IE。就像是:

layer_name = 'block3_conv1'
filter_index = 0

layer_output = model.get_layer(layer_name).output
loss = K.mean(layer_output[:, :, :, filter_index])

但是,由于 vgg16 卷积显示为模型并且它的层没有暴露,我得到错误:

ValueError: No such layer: block3_conv1



我该怎么做呢?

最佳答案

关键是先做.get_layer在 Model 对象上,然后再做一次 .get_layer在指定特定的 vgg16 层上,然后执行 .output:
layer_output = model.get_layer('vgg16').get_layer('block3_conv1').output

关于keras - 在 Keras 中,如何获取与我的模型中包含的 "Model"对象关联的层名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50283844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com