好久都没有写文章了,一直忙着看论文,写论文,参加比赛升级打怪。今天抽出点时间,写点基础的东西,今天分享的是利用temsorflow的slim模块来加载预训练好的模型并输出其参数名称。
首先模型的下载地址为:https://github.com/tensorflow/models/tree/master/research/slim
大家可以从上面下载我们需要的模型,而我们平时保存的模型中一共有四个文件,其中.meta文件保存的是我们的模型图结构;.ckpt保存的是我们的模型中变量的取值;而.index文件保存的是模型中变量的名字;.pb文件有两种情况,一个是只保存了计算图结构,不包含变量值,可以通过tf.train.write_graph() 方法生成,第二种情况是不仅包含计算图结构,还包含了训练产生的变量值。从上面的地址下载的模型有时候只有.ckpt文件,所以需要我们自己写图结构,或者从上面的py文件中找到所需要的文件即可,如下图所示。

我们以vgg为例,vgg只有ckpt文件,因此,我下载了vgg.py文件和vgg16的预训练模型,然后将其直接加载即可,需要注意的是,这里的vgg16将最后的全连接层转化为了卷积层,适合我作为FCN的backbone来使用,要是需要做分类的话,需要大家重新调整最后几层的网络结构,来适应不同的任务。加载模型的部分程序如下图所示。

通过运行输出的结果可以看出,网络已经加载完毕了。最后我们想要看一下网络参数的名字和数值的话,直接利用tensorflow中的pywrap_tensorflow函数即可,程序如下图所示。

以上就是我今天的分享,这几天我抽时间做一个FCN模型的复现与大家分享。希望大家多多关注。以上所有的代码已上传到GitHub。
网友评论