张量: 张量(Tensor):多维数组或向量,同其它主流深度学习框架一样,PaddlePaddle使用张量来承载数据
Layer: 表示一个独立的计算逻辑,通常包含一个或多个operator(操作),如layers.relu表示ReLU计算;layers.pool2d表示pool操作。Layer的输入和输出为Variable。 Variable: 表示一个变量,可以是一个张量(Tensor),也可以是其它类型。Variable进入Layer计算,然后Layer返回Variable。创建变量方式: program: Program包含Variable定义的多个变量和Layer定义的多个计算,是一套完整的计算逻辑。从用户角度来看,Program是顺序、完整执行的。 Executor: Executor用来接收并执行Program,会一次执行Program中定义的所有计算。通过feed来传入参数,通过fetch_list来获取执行结果。 place: PaddlePaddle可以运行在lntel CPU,Nvidia GPU,ARM CPU和更多嵌入式设备上,可以通过Place用来指定执行的设备(CPU或GPU)。 optimizer: 优化器,用于优化网络,一般用来对损失函数做梯度下降优化,从而求得最小损失值
程序的执行过程:
数据准备 什么是数据准备:
数据准备是指将样本数据从外部(主要指文件)读入,并且按照一 定方式(随机、批量)传递给神经网络,进行训练或测试的过程数据准备包含三个步骤: 第一步:自定义Reader生成训练/预测数据 第二步:在网络配置中定义数据层变量 第三步:将数据送入网络进行训练/预测
import numpy
import paddle
def reader_creator(file_path):
def reader():
with open(file_path, "r") as f:
lines = f.readlines()
for line in lines:
yield line.replace("\n","")
return reader
reader = reader_creator("test.txt")
shuffle_reader = paddle.reader.shuffle(reader,10)
batch_reader = paddle.batch(shuffle_reader,3)
for data in batch_reader():
print(data, end="")
模型的加载与保护 预测模型的加载与保存:
保存预测模型:
fluid.io.save_inference_model(dirname, feeded_var_names, target_vars, executor)
参数说明:
dirname(str):保存预测model的路径
feeded_var_names(list[str]):预测需要feed的数据
target_vars(list[Variable])︰保存预测结果的Variables
executor(Executor): executor保存inference model
加载预测模型:
fluid.io.load_inference_model(dirname, executor)
参数说明:
dirname (str)一保存预测model的路径
executor(Executor)-运行模型的Executor
返回值说明:
Program :用于预测的Program
feed_target_names(str列表)︰预测Program中提供数据的变量的名称fetch_targets(Variable列表)︰存放预测结果
增量模型的保存与加载:
保存增量模型:
fluid.io.save_persistables(executor, dirname, main_program=None)
参数说明:
executor (Executor):保存变量的executor
dirname (str):保存模型的路径
main_program (ProgramNone):需要保存变量的Program。如果为None,则使用default_main_Program
加载增量模型:
fluid.io.load_persistables(executor, dirname, main_program=None)
参数说明:
executor (Executor): 加载变量的executor
dirname(str):保存增量模型的路径
main_ program (ProgramNone):需要加载变量的 Program。如果为None,则使用default_main_Program
fluid API结构图:
|