可视化输出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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值