caffemodel可视化
JLU-IPVR
听笙
本章介绍的内容是比较重要的,通过之前的学习,已经掌握了基本的训练模型的流程和方法,也了解了*_solver.prototxt和*_train_test.prototxt中涉及的参数和变量的含义。
我们经过具体操作可以发现,当训练结束后,我们得到的不止是.caffemodel文件还有solverstate文件,caffemodel文件里保存的是网络训练结束后存放的各层的参数,里边并不会存放数据blobs。Sloverstate里面保存的东西比caffemodel多了一些东西,例如,模型的名称、当前迭代次数等。并且两者的作用不同,caffemodel是用来在测试阶段做分类使用的。而sloverstate,是用来恢复训练的,防止发生意外而保存的快照,例如突然断电,避免重新训练花费大量的时间,只需要使用最近一次保存的sloverstate即可恢复训练。
使用已经训练好的模型进行可视化,在网上下载了cifar-10的数据进行了训练,得到模型_iter_60000.caffemodel。使用jupyternotebook。
首先导入必要的库
设置网络模型,并显示该模型中各层名称和参数的规模(此处是net.params,而不是net.blobs)
这里注意cifar10_full.prototxt实际上是指的就是solver.prototxt这个文件,并不是train_test.prototxt这个文件。
cifar10训练的模型配置在文件cifar10_full.prototxt里面,共有三个卷积层和一个全连接层,参数规模如上所示。
参数有两种类型:权值参数和偏置项。分别用params["conv1"][0] 和params["conv1"][1] 表示 。 我们只显示权值参数,因此用params["conv1"][0],当然也可以显示偏置项。