时间:2021-05-22
在深度学习中,如果我们想获得某一个层上的feature map,就像下面的图这样,怎么做呢?
我们的代码是使用keras写的VGG16网络,网络结构如图:
那么我们随便抽取一层的数据吧,就拿第四层的pooling以后的结果作为输出吧,参考上面的网络结构,得到的结果维度应该是[1,56,56,128]的尺度。
怎么做呢?
首先通过keras构建模型:
model = VGG16(include_top=True, weights='imagenet')然后设置输入和输出为:原始的输入和该层对应的输出,然后使用predict函数得到对应的结果
dense_result = Model(inputs=model.input,outputs=model.get_layer("block2_pool").output) dense_res = dense_result.predict(x)#使用predict得到该层结果设置随机数(或者固定的数字)来获取某一层的结果
rand_layer = random.randint(10,128)x_output = dense_res[0,:,:,rand_layer] #获取某一层的数据:因为原始数据维度是[1,x,x,depths]的,我们仅仅提取某一个depth对应的[x,x]维度的信息# 获取最大值,然后对该层数据进行归一化之后投影到0-255之间max = np.max(x_output)print(max,"max value is :")# 然后进行归一化操作x_output =x_output.astype("float32") / max * 255print(x_output.shape)最后对该层的feature进行显示,我们使用Pillow库
# 把图像转换成image可以表示的方式进行显示from PIL import Image as PILImagex_output =PILImage.fromarray(np.asarray(x_output)) x_output1 = x_output.resize((400,400)) x_output1.show() print(np.asarray(x_output1))结果如上图所示啦~
以上这篇在keras中获取某一层上的feature map实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
问题:训练好的网络模型想知道中间某一层的权重或者看看中间某一层的特征,如何处理呢?1、获取某一层权重,并保存到excel中;以resnet18为例说明:
前言:keras默认提供了如何获取某一个层的某一个节点的输出,但是没有提供如何获取某一个层的输出的接口,所以有时候我们需要获取某一个层的输出,则需要自己编写代码
在使用tensorflow中,我们常常需要获取某个变量的值,比如:打印某一层的权重,通常我们可以直接利用变量的name属性来获取,但是当我们利用一些第三方的库来
【题目】keras中的Merge层(实现层的相加、相减、相乘)详情请参考:Merge层一、层相加keras.layers.Add()添加输入列表的图层。该层接收
上一层的内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。名词解释:OSI(OpenSystemInterconnection,开放系统互联)