程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

keras 实现神经网络层特征图 可视化(基于retinanet项目)

发布于2019-08-20 10:09     阅读(1538)     评论(0)     点赞(12)     收藏(5)


  1. from keras import backend as K
  2. from keras.models import load_model
  3. from matplotlib import pyplot as plt
  4. import cv2
  5. import numpy as np
  6. from keras_retinanet import models
  7. import math
  8. def main():
  9. #装载训练好的模型,这里是使用keras_retinanet工程编写的load_model函数,实际上也是调用了keras.models import load_model方法
  10. model = models.load_model('G:/model/resnet50_csv_03_2019-05-24-1345.h5',backbone_name='resnet50')
  11. #读取图片
  12. images=cv2.imread("transformer_97.jpg")
  13. cv2.imshow("Image", images)
  14. #扩展图像的维度
  15. image_arr = np.expand_dims(images, axis=0)
  16. # 第一个参数,表示模型的输入层,[model.layers[0].input]表示输入数据;
  17. # 第二个参数,表示模型的输出层,可根据需要提取模型相应的中间层作为输出层,如[model.layers[2].output]表示获取中间层第2层作为输出层
  18. # 注意,layer_n实际上是一个函数
  19. layer_n = K.function([model.layers[0].input], [model.layers[200].output])
  20. #通过输入端输入数据,获取模型的输出结果
  21. f1 = layer_n([image_arr])[0]
  22. # 根据模型输出层的特征数,遍历输出层的所有特征图像(通常输出层是多通道的,不能直接显示出来)
  23. row_col = math.floor(f1.shape[3] ** 0.5)
  24. for _ in range(row_col*row_col):
  25. show_img = f1[:, :, :, _]
  26. print(f1.shape)
  27. feature_shape=show_img.shape
  28. #再次调整特征图像的维度,调整为2维特征
  29. show_img.shape = [feature_shape[1], feature_shape[2]]
  30. #根据特征数目计算显示的格子个数
  31. plt.subplot(row_col, row_col, _ + 1)
  32. #将图像投影到plt画布上
  33. plt.imshow(show_img)
  34. #关闭坐标
  35. plt.axis('off')
  36. plt.show()
  37. if __name__ == '__main__':
  38. main()

 



所属网站分类: 技术文章 > 博客

作者:44344df

链接:https://www.pythonheidong.com/blog/article/48925/a3ea21d0e8a47f6bccac/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

12 0
收藏该文
已收藏

评论内容:(最多支持255个字符)