caffemodel可视化

JLU-IPVR

听笙

本章介绍的内容是比较重要的,通过之前的学习,已经掌握了基本的训练模型的流程和方法,也了解了*_solver.prototxt和*_train_test.prototxt中涉及的参数和变量的含义。

我们经过具体操作可以发现,当训练结束后,我们得到的不止是.caffemodel文件还有solverstate文件,caffemodel文件里保存的是网络训练结束后存放的各层的参数,里边并不会存放数据blobs。Sloverstate里面保存的东西比caffemodel多了一些东西,例如,模型的名称、当前迭代次数等。并且两者的作用不同,caffemodel是用来在测试阶段做分类使用的。而sloverstate,是用来恢复训练的,防止发生意外而保存的快照,例如突然断电,避免重新训练花费大量的时间,只需要使用最近一次保存的sloverstate即可恢复训练。

使用已经训练好的模型进行可视化,在网上下载了cifar-10的数据进行了训练,得到模型_iter_60000.caffemodel。使用jupyternotebook。

首先导入必要的库

caffemodel可视化

设置网络模型,并显示该模型中各层名称和参数的规模(此处是net.params,而不是net.blobs)

caffemodel可视化

这里注意cifar10_full.prototxt实际上是指的就是solver.prototxt这个文件,并不是train_test.prototxt这个文件。
cifar10训练的模型配置在文件cifar10_full.prototxt里面,共有三个卷积层和一个全连接层,参数规模如上所示。

caffemodel可视化

参数有两种类型:权值参数和偏置项。分别用params["conv1"][0] 和params["conv1"][1] 表示 。
我们只显示权值参数,因此用params["conv1"][0],当然也可以显示偏置项。

caffemodel可视化