本文已同步至公众号,欢迎关注。
很多同学在搭建深度学习模型的时候,困惑于如何查看模型结构,也困惑于如何查看模型参数。本文就对其中的部分做介绍。
一般采用不同的深度学习框架,都会有相应的方法可以查看对应的模型结构,但是,不同的框架,采用不同的方法,有的方法还要经过很多次配置,这就给使用造成了很多麻烦。
而且,如果手里只有别人的模型文件,模型的结构就无法得知了。
现在博主就介绍一个工具,可以通过模型文件,来查看网络结构。如果你想仿制别人的模型,在只有模型文件的情况下,就可以轻松百飘。
上链接
https://github.com/lutzroeder/Netron
你只需要打开模型文件,就可以看到网络结构。而且
Netron supports ONNX (.onnx
, .pb
, .pbtxt
), Keras (.h5
, .keras
), TensorFlow Lite (.tflite
), Caffe (.caffemodel
, .prototxt
), Darknet (.cfg
), Core ML (.mlmodel
), MNN (.mnn
), MXNet (.model
, -symbol.json
), ncnn (.param
), PaddlePaddle (.zip
, __model__
), Caffe2 (predict_net.pb
), Barracuda (.nn
), Tengine (.tmfile
), TNN (.tnnproto
), RKNN (.rknn
), MindSpore Lite (.ms
), UFF (.uff
).
Netron has experimental support for TensorFlow (.pb
, .meta
, .pbtxt
, .ckpt
, .index
), PyTorch (.pt
, .pth
), TorchScript (.pt
, .pth
), OpenVINO (.xml
), Torch (.t7
), Arm NN (.armnn
), BigDL (.bigdl
, .model
), Chainer (.npz
, .h5
), CNTK (.model
, .cntk
), Deeplearning4j (.zip
), MediaPipe (.pbtxt
), ML.NET (.zip
), scikit-learn (.pkl
), TensorFlow.js (model.json
, .pb
).
爽不爽只有用了才知道。看个图:加载onnx模型。
你肯定知道,.h5文件保存的就是模型的参数,但是里面到底是什么样的呢?
因为.h5文件是按照层次数据格式第5代的版本(Hierarchical Data Format,HDF5)来保存模型的。
先上链接:
https://s3.amazonaws.com/hdf-wordpress-1/wp-content/uploads/manual/HDFView/3.1/HDFView-3.1.0-win10vs14_64.zip
我们来看个效果。
打开之后,双击文件名,test.h5,在右侧会显示模型文件的基本信息。其中,model_config就是模型中各个层的详细信息。如何把它保存为txt详细查看。
model_weights 下面有很多子选项,这些跟model_config中是一一对应的。里面保存的是参数数据。
optimizer_weights 是训练优化数据,保存的是训练过程中的参数,比如说adam优化器的参数。