【Deep Learning with Python】C5 热力图-感兴趣区域可视化

什么用以及是什么

这个比较难以理解,尤其是实现部分的代码,因为需要对卷积核有更进一步的理解。

  • 目的
    • 我想知道这么多个filter(通道,卷积核,下文不做区分),哪几个更重要,我想知道它们对于结果的贡献
    • 我想知道输入的一个数据案例中哪一部分更加重要
  • 原理简图

 

  1. 输入对每一个通道进行求导,得到输出对各个通道梯度,可以视为通道对结果的贡献权重
  2. 让所有通道 * 权重,权重越大,通道输出就会放大,反之,通道输出就会缩小
  3. 全通道叠加,得到14 * 14的统一通道,通道上每个位置都是各个通道的加权和

基本步骤就是上述,其实主要是理解两点:

  • 想知道某个东西对结果的影响权重,那就对它求导就可以,导数的意义就在这里
  • 得到各个通道的权重,让所有通道输出加权和即可

代码和注释

下面代码中关键的输出都注释了,理解需要。

 

african_elephant_output = model.output[:, 386]

# <tf.Tensor 'strided_slice_2:0' shape=(?,) dtype=float32>

# model.output <tf.Tensor 'predictions/Softmax:0' shape=(?, 1000) dtype=float32>

 

last_conv_layer = model.get_layer('block5_conv3')

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值