加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

看懂这篇指南,包你掌握神经网络的“黑匣子”

发布时间:2019-06-04 18:09:32 所属栏目:建站 来源:读芯术
导读:副标题#e# 人类的神经网络是如何运行的?这个问题让很多数据科学家感到困惑。解释某个简单神经网络的工作机制非常容易,但是当某个计算机视觉项目中的层数增加1000倍时,该怎么办呢? 终端用户想要了解模型是如何得到最终结果时,仅用纸和笔来解释深度神经网

这也说明了在输入图像像素细微改变时输出类别将如何产生变化。梯度的所有正值都表明,像素值的细微变化会增加输出值:

看懂这篇指南,包你掌握神经网络的“黑匣子”

这些梯度与图像的形状相同(梯度是针对每个像素计算的),对直观感觉产生影响。

那么如何生成显著图呢?首先使用下述代码读取输入图像。

看懂这篇指南,包你掌握神经网络的“黑匣子”

然后,通过VGG16模型生成显著图:

  1. # Utility to search for layer index by name.  
  2. # Alternatively we can specify this as -1 since it corresponds to the last layer. 
  3. layer_idx = utils.find_layer_idx(model, 'predictions') 
  4.  
  5. # Swap softmax with linear 
  6. model.layers[layer_idx].activation = activations.linear 
  7. model = utils.apply_modifications(model) 
  8.  
  9. #generating saliency map with unguided backprop 
  10. grads1 = visualize_saliency(model, layer_idx,filter_indices=None,seed_input=image) 
  11. #plotting the unguided saliency map 
  12. plt.imshow(grads1,cmap='jet') 

看懂这篇指南,包你掌握神经网络的“黑匣子”

可以看到,模型更加关注狗的面部。下图呈现了使用导向反向传播后的结果:

  1. #generating saliency map with guided backprop 
  2. grads2 =  visualize_saliency(model, layer_idx,filter_indices=None,seed_input=image,backprop_modifier='guided') 
  3. #plotting the saliency map as heatmap 
  4. plt.imshow(grads2,cmap='jet') 

看懂这篇指南,包你掌握神经网络的“黑匣子”

导向反向传播将所有的负梯度变为0,即只更新对类别概率有积极影响的像素。

CAM(Class Activation Maps)(梯度加权)

CAM也是一种神经网络可视化技术,基本原理是根据其梯度或对输出的贡献来权衡激活图。

以下节选自Grad-CAM论文给出了该技术的要点:

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读