在Keras中,如何获取与“;模型";我的模型中包含的对象?

在Keras中,如何获取与“;模型";我的模型中包含的对象?,keras,keras-layer,convolutional-neural-network,Keras,Keras Layer,Convolutional Neural Network,我在初始基础上使用VGG16网络构建了一个顺序模型,例如: 从keras.applications导入VGG16 conv_base=VGG16(weights='imagenet', #不包括顶部完全连接的致密层 include_top=False, 输入_形状=(150,150,3)) 从keras导入模型 从keras导入图层 model=models.Sequential() 模型添加(conv_base) model.add(layers.flatte()) model.add(lay

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

从keras.applications导入VGG16
conv_base=VGG16(weights='imagenet',
#不包括顶部完全连接的致密层
include_top=False,
输入_形状=(150,150,3))
从keras导入模型
从keras导入图层
model=models.Sequential()
模型添加(conv_base)
model.add(layers.flatte())
model.add(layers.Dense(256,activation='relu'))
#3对应于三个输出类
model.add(layers.Dense(3,activation='sigmoid'))
我的模型如下所示:

model.summary()

层(类型)输出形状参数
=================================================================
vgg16(型号)(无、4、4、512)14714688
_________________________________________________________________
展平1(展平)(无,8192)0
_________________________________________________________________
密集型_7(密集型)(无,256)2097408
_________________________________________________________________
致密(致密)(无,3)771
=================================================================
总参数:16812867
可培训参数:16812867
不可训练参数:0
_________________________________________________________________
现在,我想获得与我的网络的vgg16模型部分相关联的层名称。例如:

layer\u name='block3\u conv1'
过滤器索引=0
图层输出=模型。获取图层(图层名称)。输出
损失=K.平均值(图层输出[:,:,:,过滤器索引])
但是,由于vgg16卷积显示为一个模型,并且它的层没有公开,因此我得到了错误:

ValueError:没有这样的层:block3\u conv1


我该怎么做

关键是首先在模型对象上执行
。获取\u层
,然后在指定特定vgg16层的对象上执行另一个
。获取\u层
,然后执行。输出:


layer\u output=model.get\u layer('vgg16')。get\u layer('block3\u conv1')。output

要从vgg16实例获取层的名称,请使用以下代码

for layer in conv_base.layers:
    print(layer.name)
模型中的名称应相同。要显示这一点,您可以执行以下操作

print([layer.name for layer in model.get_layer('vgg16').layers])

就像Ryan给我们看的那样。要调用vgg16层,必须首先使用get_layer方法从模型中调用它

只需将图层名称存储在列表中,即可供进一步使用

layer_names=[layer.name for layer in base_model.layers]
这对我有用:)

for idx in range(len(model.layers)):
  print(model.get_layer(index = idx).name)