NCNN示例之squeezenet_v1.1.param/bin文件解析

标签:
it教育 |
分类: *机器学习 |
NCNN 示例之 squeezenet_v1.1.param/bin
文件解析
*.param 文件:
描述神经网络的结构,包括层名称,层输入输出信息,层参数信息等。
7767517
版本号(如下图代码)
层数
数据交换结构(blob)数量
75
83
layer:
神经网络是一层一层向前推进计算的,每一层用一个 layer
表示;
blob:
每一个 layer 都可能会有输入、输出,在 ncnn
中用一个多维(3维)向量表示,
每一个输入、输出为一个 blob ,并为它起名。
从第 3 行起的每一行描述一个 layer
如下:
层类型
层名
层输入数量 层输出数量
层输入名
层输出名
Input
data
0
1
data
Convolution
conv1
1
1
data
conv1
ReLU
relu_conv1
1
1
conv1
conv1_relu_conv1
Pooling
pool1
1
1
conv1_relu_conv1
pool1
Convolution
fire2/squeeze1x1
1
1
pool1
fire2/squeeze1x1
层配置参数(形式有两种:一是 k=v 二是
k=len,v1,v2,v3...(数组))
0=227
1=227 2=3
0=64
1=3 2=1
3=2 4=0 5=1
6=1728
0=0.000000
0=0
1=3
2=2 3=0 4=0
0=16
1=1 2=1
3=1 4=0 5=1
6=1024
1)层 类 型:Input、Convolution、ReLU
2)层 名:模型训练者为该层起得名字(相同类型的层可能多次使用要能区分)
3)层输入数量:层输入blob数量
4)层输出数量:层输出blob数量
5)层输入名称:
6)层输出名称:
7)层配置参数:
*.bin 文件:binary,二进制
存储了对应模型中部分层的计算需求参数(如:卷积层的权重、偏置信息等)。
如 squeezenet_v1.1.param 文件中的第四行
Convolution 层,
对应的 squeezenet_v1.1.bin
文件中就存储了其:
0 - num_output:
64 个 float 类型的偏置数据( weight
bias)
1 - kernel_w:
3
2 - dilation_w:
1
3 - stride_w:
2
4 - pad_left:
0
5 - bias_term:
1
6 - weight_data_size:1728 = 3(核高) * 3(核宽) * 3(RGB三通道) *
64(输出单元数量) 个 float 类型的权重数据(weight_data)
.bin文件字节块结构:
四字节的weight_data数据类型标志 + 6912(1728 *
4)字节的weight_data数据 + 256(64*4)字节的bias偏置数据
注:float 类型是四个字节。
后一篇:AndroidNDK编译NCNN