Fluid 编程方法
常用内容
1、创建模型的可学习参数,用Fluid中的Variable子类Parameter表示
w = fluid.layers.create_parameter(name=“w”,shape=[1],dtype=‘float32’)
但是Fluid大部分神经网络计算模块都提供了封装,不需要显示调用Parameter来调用
2、输入输出Tensor
使用fluid.layer.data来接收数据
b = fluid.layers.data(name=“image”,shape=[3,None,None],dtype=“float32”
3、Tensor常量
用户可以指定Tensor的形状、数据类型、常量值
data = fluid.layers.fill_constant(shape=[1], value=0, dtype=‘int64’)
编程流程
一、准备数据
1、自定义Reader生成训练/预测数据
根据生成的数据类型Numpy Array (多维的数组)或LoDTensor(多层序列数据格式)
根据返回数据的形式,Batch级的Reader(每次返回一个Batch数据),Sample级的Reader(每次返回单次样本的数据
)(数据预处理和组建batch工具,Python Reader)
2、将数据送入网络进行训练/预测
(1)数据格式Numpy Array和LoDTensor
a.同步Feed方式
fluid.layers.data配置数据输入层
fluid.Executor或者fluid.ParallesExecutor使用executor.run(feed=…)传入数据
(数据准备与预测的过程是同步进行的,效率低)
b.异步py_reader接口方式
fluid.layers.py_reader配置数据输入层
py_reader的decorate_paddle_reader或decorate_tensor_provider配置数据源
fluid.layers.read_file读取数据
(数据传入与模型训练/预测过程是异步进行的,效率高)
(2)数据格式Sample级Reader数据
a.组织数据
数据的预处理,调用Reader的接口
b.送入数据
Feed方式,用DataFeeder接口将Reader数据转换为LoDTensor格式送入网络
异步py_reader,调用decorate_paddle_reader接口
(3)数据格式Batch级Reader数据
a.组建数据
Batch结够数据已经组建好
b.送入数据
Feed同步
数据层配置fluid.layers.data()
传递给执行器 Executor.run和ParallelExecutor.run
异步 py_reader的decorate_tensor_provider接口调用
二、配置简单的网络
从逻辑层面进行建模
明确所需的输入类型、计算逻辑、求解目标以及优化算法
问题描述
例: 简单的回归模型,损失函数使用均方误差,选用简单的随机梯度下降算法求解模型
样本特征:13维 实数
输入数据类型:
样本标签:1维 实数
计算逻辑 使用线性模型,产生1为实数作为模型的预测输出
求解目标 最小化模型预测输出与样本标签间的均方误差
优化算法 随机梯度下降
一个典型的模型主要包含四个部分:输入格式定义/模型前向计算逻辑/损失函数/优化算法
数据层:
fluid.layers.data()
前向计算逻辑:
fluid.layers.op 表示算子类型
fluid.layers.fc 表示执行线性变换
fluid.layers.conv执行卷积变换
损失函数:
cost = fluid.layers.square_error_cost(input=y_predict, label=y)
avg_cost = fluid.layers.mean(cost)
优化算法:
sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.001)
三、训练神经网络
1、进行模型配置
使用fluid.default_startup_program()与fluid.default_main_orogram()获得全局变量
2、初始化参数
a.参数随机初始化
使用fluid.Executor()运行,在全局fluid.global_scope()中随机初始化参数
b.载入预定义参数
3、单卡训练
fluid.Executor()中的run()方法,训练fluid.Program
4、多卡训练
四、模型评估
常用指标
二分类指标