65 lines
2.5 KiB
Markdown
65 lines
2.5 KiB
Markdown
|
## net.param
|
||
|
### example
|
||
|
```
|
||
|
7767517
|
||
|
3 3
|
||
|
Input input 0 1 data 0=4 1=4 2=1
|
||
|
InnerProduct ip 1 1 data fc 0=10 1=1 2=80
|
||
|
Softmax softmax 1 1 fc prob 0=0
|
||
|
```
|
||
|
### overview
|
||
|
```
|
||
|
[magic]
|
||
|
```
|
||
|
* magic number : 7767517
|
||
|
```
|
||
|
[layer count] [blob count]
|
||
|
```
|
||
|
* layer count : count of the layer line follows, should be exactly the count of all layer names
|
||
|
* blob count : count of all blobs, usually greater than or equals to the layer count
|
||
|
### layer line
|
||
|
```
|
||
|
[layer type] [layer name] [input count] [output count] [input blobs] [output blobs] [layer specific params]
|
||
|
```
|
||
|
* layer type : type name, such as Convolution Softmax etc
|
||
|
* layer name : name of this layer, must be unique among all layer names
|
||
|
* input count : count of the blobs this layer needs as input
|
||
|
* output count : count of the blobs this layer produces as output
|
||
|
* input blobs : name list of all the input blob names, separated by space, must be unique among input blob names of all layers
|
||
|
* output blobs : name list of all the output blob names, separated by space, must be unique among output blob names of all layers
|
||
|
* layer specific params : key=value pair list, separated by space
|
||
|
### layer param
|
||
|
```
|
||
|
0=1 1=2.5 -23303=2,2.0,3.0
|
||
|
```
|
||
|
key index should be unique in each layer line, pair can be omitted if the default value used
|
||
|
|
||
|
the meaning of existing param key index can be looked up at [operation-param-weight-table](operation-param-weight-table)
|
||
|
|
||
|
* integer or float key : index 0 ~ 19
|
||
|
* integer value : int
|
||
|
* float value : float
|
||
|
* integer array or float array key : -23300 minus index 0 ~ 19
|
||
|
* integer array value : [array size],int,int,...,int
|
||
|
* float array value : [array size],float,float,...,float
|
||
|
|
||
|
## net.bin
|
||
|
```
|
||
|
+---------+---------+---------+---------+---------+---------+
|
||
|
| weight1 | weight2 | weight3 | weight4 | ....... | weightN |
|
||
|
+---------+---------+---------+---------+---------+---------+
|
||
|
^ ^ ^ ^
|
||
|
0x0 0x80 0x140 0x1C0
|
||
|
```
|
||
|
the model binary is the concatenation of all weight data, each weight buffer is aligned by 32bit
|
||
|
|
||
|
### weight buffer
|
||
|
```
|
||
|
[flag] (optional)
|
||
|
[raw data]
|
||
|
[padding] (optional)
|
||
|
```
|
||
|
* flag : unsigned int, little-endian, indicating the weight storage type, 0 => float32, 0x01306B47 => float16, otherwise => quantized int8, may be omitted if the layer implementation forced the storage type explicitly
|
||
|
* raw data : raw weight data, little-endian, float32 data or float16 data or quantized table and indexes depending on the storage type flag
|
||
|
* padding : padding space for 32bit alignment, may be omitted if already aligned
|