可视化输出caffe模型权重(weights)和偏执(baise)

人脸识别任务中,做蒸馏训练小网络时,发现测试蒸馏后的网络的千分点frr、万分点frr都是0,说明对于所有输入,网络的输出相同了。因此需要可视化caffemodel的权重确认是否模型失效(推测模型权重接近0)。 

  • 需要明确的:

Caffe主要处理两种形式的数据流: 
1. 第一种数据流,图像和标签在网络上的传输,随着网络的传输,它们转化更高层次的表示,最终以得分或者概率值的形式输出。 
2. 第二种数据流,主要保存各个网络层的参数,比如卷积层的weights和bias. 这些值是随着的网络的训练过程不断变化的。

这两种数据流虽然说角色不一样,但是都是以blob的形式进行保存和处理的。本篇博文只对网络中的第二种数据流进行可视化(由于是在python的虚拟环境下测试的,需要的tcl库有问题,所以目前只是将相应的数值进行输出并没有通过matpyplotlib包进行可视化显示)   

  • 工具准备

1、配置好caffe的python接口(在caffe-master下:make pycaffe或使用protoc 工具手动编译caffe-master/python/proto生成caffe的python接口(ptotoc --python_out=. caffe.proto))

2、需要的相关python包都装好(我是通过创建python虚拟环境安装的(pipenv))

  • 需要的代码主体
#编译好pycaffe,加载好caffe的python接口
import os,sys
import matplotlib.pyplot as plt
#import numpy as np
caffe_root = '/home/spark/caffe-master'
os.chdir(caffe_root)
caffe_python = caffe_root + '/python'
sys.path.insert(0,caffe_python)
import caffe

#设置caffe的运行模式为cpu,加载模型定义文件(注意这里使用deploy.prototxt)和模型权重文件
caffe.set_mode_cpu()
model_def = caffe_root + "/examples/Distill_Experimet/check_model/deploy.prototxt"
model_weights = caffe_root + "/examples/Distill_Experimet/model/fit_method/stage2/res50_stu_1_b_0.5_iter_160000.caffemodel"

#将网络和模型进行加载,并使用测试模式(不执行dropout)
net = caffe.Net(model_def, #模型结构
                model_weights, #模型参数
                caffe.TEST) #测试模式

print(net.params['stage2_unit4_conv1'][0].data)#打印卷积核的参数
print(net.params['stage2_unit4_conv1'][0].data.shape)#打印卷积核的shape

#print(net.params['conv0'][1].data) 打印偏执参数
#print(net.params['conv0'][1].data.shape)  打印偏执shape
  • 权重和权重shape可视化的结果
[[[[ 2.85918195e-05  7.31788459e-05 -4.35399299e-04]
   [-1.97530710e-04  1.56638598e-05  1.88119244e-04]
   [-3.87767970e-04 -3.53787880e-04 -5.74383477e-04]]

  [[-6.24565466e-04  2.72265635e-04 -4.74647386e-04]
   [-9.88911197e-05  2.18531772e-04 -6.25106914e-04]
   [ 2.18421439e-04  1.76478730e-04 -1.07452412e-04]]

...

  [[ 1.78139060e-04  1.11633490e-04  2.23182389e-04]
   [ 2.26858610e-04 -4.85154189e-04 -5.52502868e-04]
   [ 8.36784893e-05  7.53474742e-05  7.75686232e-04]]

  [[-3.92734277e-04 -8.61052395e-05  8.78248306e-04]
   [-6.60601945e-04  4.92856379e-05 -2.42564056e-04]
   [-3.64533480e-05  3.49401264e-04  3.64219100e-04]]]]

(128, 128, 3, 3)

可见权重参数在e-4和e-5量级(基本接近于0),所以模型失效了。

而可视化正确分类的model权重数值在e-2,e-3左右。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. TensorBoard 2. Neural Network Playground 3. D3.js 4. Bokeh 5. Matplotlib 6. Seaborn 7. Plotly 8. Altair 9. ggplot 10. Highcharts 11. Tableau 12. Power BI 13. Google Charts 14. Flourish 15. Chart.js 16. Leaflet 17. Mapbox 18. Deck.gl 19. Vis.js 20. Three.js ### 回答2: 推荐20种可视化深度学习模型的工具: 1. TensorBoard:TensorFlow开发的可视化工具,适用于可视化训练过程中的模型结构、参数和性能等信息。 2. Keras Visualization Toolkit:Keras库提供的一系列可视化工具,包括模型结构可视化、特征可视化和激活可视化等。 3. Netron:一个轻量级的模型可视化工具,支持多种深度学习框架的模型文件可视化。 4. TensorFlow Playground:一个基于Web的交互式可视化工具,用于探索和理解深度学习模型的行为。 5. CaffeVis:Caffe框架的可视化工具,可用于可视化模型中的特征映射和过滤器。 6. MXNet Visualization Toolkit:MXNet库提供的一系列可视化工具,包括网络结构可视化和训练过程可视化。 7. DeepLearning4J:一个跨平台的深度学习库,提供了可视化模型训练过程的功能。 8. NN-SVG:一个用于生成神经网络结构的SVG图像的工具,可用于可视化深度学习模型。 9. Deep Visualization Toolbox:一个基于Matplotlib和Scipy的可视化工具包,用于可视化深度学习模型的特征和权重。 10. Gephi:一个图可视化工具,可以用于可视化深度学习模型中的关系网络。 11. T-SNE:一个用于高维数据降维可视化的算法,可用于可视化深度学习模型中的隐藏层表示。 12. Lucid:一个用于可视化和解释深度神经网络的库,支持多种深度学习框架。 13. PlotNeuralNet:一个用于绘制神经网络结构的Python库,可用于可视化深度学习模型。 14. PyTorch Geometric:一个用于处理图形数据的PyTorch扩展库,可用于可视化和处理图神经网络。 15. DeepArt:一个用于可视化深度学习模型生成艺术作品的工具。 16. DeepExplain:一个用于解释深度学习模型预测结果的工具,提供了多种可视化解释方法。 17. LIME:一个用于可视化解释机器学习模型预测结果的工具,适用于解释深度学习模型。 18. Distill:一个在线期刊,专注于可视化和解释深度学习模型的方法和工具。 19. ModNet:一个用于可视化深度学习模型中的模组化结构的工具。 20. DeepDream:一个用于生成迷幻效果图像的工具,可以用于可视化深度学习模型的激活模式。 ### 回答3: 以下是我推荐的20种可视化深度学习模型的工具: 1. TensorFlow:Google开发的开源深度学习框架,提供了丰富的可视化功能,包括模型结构、损失函数和训练过程的可视化。 2. Keras:基于TensorFlow和Theano的高级神经网络API,也提供了可视化工具,可用于展示神经网络架构和训练进程。 3. PyTorch:Facebook开发的开源深度学习框架,提供了一种可视化工具叫做TensorBoardX,通过它可以可视化模型训练过程。 4. D3.js:一个灵活的JavaScript库,可用于创建各种可视化图表和交互式界面,可以用于可视化深度学习模型的结构、权重等信息。 5. Matplotlib:Python的一个绘图库,可以用于绘制各种图表和可视化深度学习模型的训练结果。 6. Seaborn:Python的一个统计数据可视化库,可以用于绘制各种统计图表,并进行模型结果的可视化。 7. Plotly:一种交互式数据可视化工具,可以生成各种图表和地图,并支持在网页上进行交互。 8. Graphviz:一个用于可视化图形结构的开源图形绘制库,可以用于可视化深度学习模型的结构和运算流程。 9. Gephi:一种用于网络可视化和分析的开源软件,可以用于可视化深度学习模型的结构和拓扑关系。 10. TensorBoard:TensorFlow提供的用于可视化训练过程的工具,可以展示模型结构和性能指标。 11. Deep playground:一个基于TensorFlow.js的在线工具,可以用于可视化深度学习模型的训练和测试。 12. Netron:一个用于可视化深度学习模型结构的工具,支持多种深度学习框架和模型格式。 13. Cytoscape:一个用于生物网络分析和可视化的开源软件,可以用于可视化深度学习模型的结构和拓扑关系。 14. WebGazer:一个用于可视化神经网络模型结构和可视化训练过程的网页工具。 15. TensorSpace:一个用于可视化深度学习模型的开源库,支持多种深度学习框架,并提供了丰富的可视化效果。 16. Neon:一个用于可视化深度学习模型的Python库,提供了多种图表和可视化效果。 17. NetScope:一个用于可视化深度学习模型结构的工具,支持多种深度学习框架。 18. TensorFlow Debugger:一个用于可视化和调试TensorFlow模型的工具,可以查看模型中的各个节点和张量的值。 19. MXNet:一个开源的深度学习框架,提供了可视化工具用于展示模型结构和训练过程。 20. Wandb:一个用于可视化深度学习模型训练过程的在线平台,可以展示训练指标、超参数等信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值