keras 输出网络结构_keras小技巧——获取某一个网络层的输出方式

本文介绍了在Keras中获取网络层输出的两种方法,包括通过遍历模型层和直接利用Model子类化。示例代码详细展示了如何从预训练模型中获取特定层的输出,并提供了加载数据、模型的步骤。推荐使用第二种方法,通过Model子类化直接获取层的输出。
摘要由CSDN通过智能技术生成

前言:

keras默认提供了如何获取某一个层的某一个节点的输出,但是没有提供如何获取某一个层的输出的接口,所以有时候我们需要获取某一个层的输出,则需要自己编写代码,但是鉴于keras高层封装的特性,编写起来实际上很简单,本文提供两种常见的方法来实现,基于上一篇文章的模型和代码: keras自定义回调函数查看训练的loss和accuracy

一、模型加载以及各个层的信息查看

从前面的定义可知,参见上一篇文章,一共定义了8个网络层,定义如下:

model.add(Convolution2D(filters=6, kernel_size=(5, 5), padding='valid', input_shape=(img_rows, img_cols, 1), activation='tanh'))

model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Convolution2D(filters=16, kernel_size=(5, 5), padding='valid', activation='tanh'))

model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())

model.add(Dense(120, activation='tanh'))

model.add(Dense(84, activation='tanh'))

model.add(Dense(n_classes, activation='softmax'))

这里每一个层都没有起名字,实际上最好给每一个层取一个名字,所以这里就使用索引来访问层,如下:

for index in range(8):

layer=model.get_layer(index=index)

# layer=model.layers[index] # 这样获取每一个层也是一样的

print(model)

'''运行结果如下:

'''

当然由于 model.laters是一个列表,所以可以一次性打印出所有的层信息,即

print(model.layers) # 打印出所有的层

二、模型的加载

准备测试数据

# 训练参数

lea

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值