PaddlePaddle Fluid Source Code Overview¶
Examples: https://github.com/PaddlePaddle/Paddle/tree/develop/python/paddle/fluid/tests/book
Core: https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/framework
Operator: https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/operators
Memory: https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/memory
Platform: https://github.com/PaddlePaddle/Paddle/tree/develop/paddle/platform
Compile Time¶
The following defines the NN. The definition goes into this protocol buffer.
x = fluid.layers.data(name='x', shape=[13], dtype='float32')
y = fluid.layers.data(name='y', shape=[1], dtype='float32')
y_predict = fluid.layers.fc(input=x, size=1, act=None)
cost = fluid.layers.square_error_cost(input=y_predict, label=y)
avg_cost = fluid.layers.mean(x=cost)
sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001)
sgd_optimizer.minimize(avg_cost)
- Variables: 
x,y,y_predict,costandavg_cost. Python - Layers: 
fluid.layers.data,fluid.layers.fcandfluid.layers.meanare layers. Python- Every Layer has one or more operators and variables/parameters
- All the operators are defined at 
paddle/operators/. Other worth-looking files:- Base class: 
paddle/framework/operator.h - Operator Registration: 
paddle/framework/op_registry.h - Operator Lookup: 
paddle/framework/op_info.h 
 - Base class: 
 
 - All the operators are defined at 
 
 - Every Layer has one or more operators and variables/parameters
 - Optimizer: 
fluid.optimizer.SGD. It does the following 
Run Time¶
The following evaluates the NN. Instantiates all the variables, operators.
place = fluid.CPUPlace()
feeder = fluid.DataFeeder(place=place, feed_list=[x, y])
exe = fluid.Executor(place)
# Allocate memory. Initialize Parameter.
exe.run(fluid.default_startup_program())
# Allocate memory. Do computation.
exe.run(fluid.default_main_program(),
        feed=feeder.feed(data),
        fetch_list=[avg_cost])
- Place: 
place. one of CPU, GPU or FPGA. C++- The device handle are at paddle/platform/device_context.h
 
 - Executor: 
fluid.Executor(place). [Python, C++]- Feeds the data: 
feed=feeder.feed(data) - Evaluates all the operators
 - Fetches the result: 
fetch_list=[avg_cost] 
 - Feeds the data: 
 - Other worth looking files:
- Scope: paddle/framework/scope.h. Where all the variables live
- Variable: paddle/framework/variable.h. Where all the data (most likely tensors) live
- Tensor: paddle/framework/tensor.h. Where we allocate memory through 
paddle/memory/ 
 - Tensor: paddle/framework/tensor.h. Where we allocate memory through 
 
 - Variable: paddle/framework/variable.h. Where all the data (most likely tensors) live
 
 - Scope: paddle/framework/scope.h. Where all the variables live
 
