Input.md 1.8 KB
Newer Older
S
sunyanfang01 已提交
1 2 3 4 5 6 7
## Input
### [Input](http://caffe.berkeleyvision.org/tutorial/layers/input.html)
```
layer {
    name: "input"
    type: "Input"
    top: "input"	
S
SunAhong1993 已提交
8 9
    input_param {
        shape {
S
sunyanfang01 已提交
10 11 12 13 14 15 16 17 18 19
	    dim: 10
	    dim: 3
	    dim: 227
	    dim: 227
	}
    }
}
```


S
SunAhong1993 已提交
20
### [paddle.fluid.layers.data](http://paddlepaddle.org/documentation/docs/zh/1.4/api_cn/layers_cn.html#permalink-20-data)
S
sunyanfang01 已提交
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
```python
paddle.fluid.layers.data(
    name, 
    shape, 
    append_batch_size=True, 
    dtype='float32', 
    lod_level=0, 
    type=VarType.LOD_TENSOR, 
    stop_gradient=True
)
```  

### 功能差异
#### 输入shape的差异
Caffe:输入的shape中每一个维度的大小都需要详细定义。  
PaddlePaddle:可以根据设置设置`append_batch_size`来确定是否将数据第一个维度的大小加入到shape中,若该参数为True,输入数据第一个维度的大小则由传入数据决定,若该参数为False,则shape的第一个维度为输入数据第一个维度的大小。   



#### 其他差异
Caffe:不需要强制定义输入数据的类型。  
PaddlePaddle:需要强制定义输入数据的类型,同时可以通过设置`lod_level`表示输入的数据是不是一个序列,设置`stop_gradient`表示是否应该停止计算梯度。


### 代码示例
``` 
# Caffe示例:
S
SunAhong1993 已提交
48
layer {
S
sunyanfang01 已提交
49 50 51
    name: "input"
    type: "Input"
    top: "input"	
S
SunAhong1993 已提交
52 53
    input_param {
    	shape {
S
sunyanfang01 已提交
54 55 56 57 58 59 60 61 62 63 64 65 66
	    dim: 10
	    dim: 3
	    dim: 227
	    dim: 227
	}
    }
}
# 数据shape为[10,3,227,227]
```

``` python
# PaddlePaddle示例:
# 数据shape为[10,3,227,227]
J
Jason 已提交
67 68 69
inputs1 = paddle.fluid.layers.data(name='data1', shape=[10,3,227,227], 
				dtype='float32', append_batch_size=False)

S
sunyanfang01 已提交
70
# 数据shape为[-1,3,227,227]
J
Jason 已提交
71
inputs2 = paddle.fluid.layers.data(name='data2', shape=[3,227,227], dtype='float32')
S
sunyanfang01 已提交
72
```