InnerProduct.md 2.4 KB
Newer Older
S
sunyanfang01 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
## InnerProduct
### [InnerProduct](http://caffe.berkeleyvision.org/tutorial/layers/innerproduct.html)
```
layer{
    name: "fc"
    type: "InnerProduct"
    bottom: "data"
    top: "fc"
    #卷积核的局部学习率和权值衰减因子
    param{
	lr_mult: 1
	decay_mult: 1
    }
    #偏置项的局部学习率和权值衰减因子
    param{
	lr_mult: 2
	decay_mult: 0
    }
    InnerProduct{
	num_output: 20	#必填项
	bias_term: True
	weight_filler {
	    type: "gaussian"
	    value: 0.01
	}
	bias_filler {
	    type: "constant"
	    value: 0
	}
    }
}
```


### [paddle.fluid.layers.fc](http://paddlepaddle.org/documentation/docs/zh/1.3/api_cn/layers_cn.html#permalink-71-fc)
```python
paddle.fluid.layers.fc(
    input,
    size,
    num_flatten_dims=1,
    param_attr=None,
    bias_attr=None,
    act=None,
    is_test=False,
    name=None
)
```  

### 功能差异
J
Jason 已提交
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
#### 参数初始化
Caffe:Layer定义中共有两个结构体`param`用于设置局部学习率和权值衰减因子,其中第一个用于设置卷积核,第二个则用于设置偏值项;卷积核和偏置项的初始化参数在`convolution_param`中进行设置;是否使用偏置项可以使用`bias_term`进行设置。  
PaddlePaddle:卷积核和偏置项的参数分别使用`param_attr``bias_attr`进行配置,配置参数如下所示,此外将`bias_attr`直接设为`False`表示不使用偏置项。
```
paddle.fluid.ParamAttr(
    name=None, 
    initializer=None, 
    learning_rate=1.0, 
    regularizer=None, 
    trainable=True, 
    gradient_clip=None, 
    do_model_average=False
)
```
#### 参数格式
S
sunyanfang01 已提交
65
Caffe:输入参数的数据格式是`(filter_num, channel*height*width)`
J
Jason 已提交
66 67
PaddlePaddle:在`num_flatten_dims=1`且输入数据维度为4的情况下,其输入参数的数据格式是`(channel*height*width, filter_num)`;其他情况下输入参数的数据格式不一定是二维的,但是`filter_num`都始终放在第二维。
#### 输入数据扁平化
S
sunyanfang01 已提交
68
Caffe:将输入数据的第一维默认为batch size,其他剩余的几个维度扁平化压缩成一个向量进行全连接的计算。                     
J
Jason 已提交
69
PaddlePaddle:通过设置`num_flatten_dims`的值,使`输入数据的维度-num_flatten_dim`个维度扁平化压缩成一个向量进行全连接计算。
S
sunyanfang01 已提交
70 71 72 73 74


#### 其他差异
Caffe:需要在另一个层中定义激活函数。  
PaddlePaddle:可以通过设置`act`这一参数来确定输出的激活函数。