<PaddlePaddle学习使用P1>——《PaddlePaddle教程》

一、PaddlePaddle概述

1.什么是PaddlePaddle


PaddlePaddle官网地址链接:https://www.paddlepaddle.org.cn/
为什么学习PaddlePaddle:

2.PaddlePaddle特点

PaddlePaddle优点(目前):

PaddlePaddle缺点(目前):

PaddlePaddle平台获奖情况(目前):

PaddlePaddle行业应用(目前):

PaddlePaddle学习资源(目前):

AIStudio官网地址链接:https://aistudio.baidu.com

3.PaddlePaddle体系结构

总体架构:

编译时与执行时:

三个重要术语:

4.PaddlePaddle安装与卸载

以Pycharm安装为例:
官方安装教程地址链接

注:

  • 由于百度提供了AIStudio平台,这里在Pycharm上安装只是为了在Pycharm配置PaddlePaddle环境,通过Pycharm的代码编辑方便快捷优点,实际运行还是在AIStudio平台。
  • 目前pycharm对paddle的兼容性不是很好,因此建议在pycharm编写代码,而运行则将代码拷贝至AIStudio集成平台。

5.在AIStudio集成平台运行PaddlePaddle

(1)打开AIStudio平台官网,注册账号

(2)创建项目

项目创建举例:

(3)编辑运行

  • 由于众所周知的原因:作为学生的我们,经济比较紧张,作者选用免费版。(因人而异,量力而行)
  • 作者在此感谢百度提供的开源学习资源,同时也感谢其他公司、机构、组织、个人等提供的开源学习资源。

    基于jupyter notebook的编辑环境页面:
    基于Linux的终端环境:
    AI Studio 经典版环境使用说明地址链接:https://ai.baidu.com/ai-doc/AISTUDIO/sk3e2z8sb
    示例1:使用paddle进行加法操作
    这是paddle 1.x版本支持的调用编写方式:
python 复制代码
#paddle 1.x版本的调用编写方式
import paddle.fluid as fluid

# 创建两个常量
x = fluid.layers.fill_constant(shape=[1], dtype="int64", value=5)
y = fluid.layers.fill_constant(shape=[1], dtype="int64", value=1)
z = x + y  # 执行两个常量的相加

# 创建执行器
place = fluid.CPUPlace()  # 指定程序在CPU上执行
exe = fluid.Executor(place)  # 创建执行器
result = exe.run(fluid.default_main_program(),
                 fetch_list=[z])  # 指定要返回的结果
print(result)

注:

  • 在paddle新的版本中运行以上代码可能出现报错的情况,这是因为上面的代码是在paddle1.x版本中支持的调用编写。而新版本的paddle可能对之前的版本进行升级,不再支持老版本的部分调用编写。

新版本实现加法:

python 复制代码
import paddle.fluid as fluid
import paddle
try:
    # 兼容PaddlePaddle2.0
    paddle.enable_static()
except:
    pass

# 定义两个张量
x1 = fluid.layers.fill_constant(shape=[2, 2], value=1, dtype='int64')
x2 = fluid.layers.fill_constant(shape=[2, 2], value=1, dtype='int64')

# 将两个张量求和
y1 = fluid.layers.sum(x=[x1, x2])

# 创建一个使用CPU的执行器
place = fluid.CPUPlace()
exe = fluid.executor.Executor(place)
# 进行参数初始化
exe.run(fluid.default_startup_program())

# 进行运算,并把y的结果输出
result = exe.run(program=fluid.default_main_program(),
                 fetch_list=[y1])
print(result)

二、PaddlePaddle的基本概念与操作

1.PaddlePaddle的基本概念

张量:

Layer:

Variable:

Program:

Executor:

Place:

Optimizer:

示例2:执行两个张量计算

python 复制代码
import paddle.fluid as fluid
import numpy as np
import paddle
try:
    # 兼容PaddlePaddle2.0
    paddle.enable_static()
except:
    pass

# 定义两个张量
a = fluid.layers.create_tensor(dtype='int64', name='a')
b = fluid.layers.create_tensor(dtype='int64', name='b')

# 将两个张量求和
y = fluid.layers.sum(x=[a, b])

# 创建一个使用CPU的执行器
place = fluid.CPUPlace()
exe = fluid.executor.Executor(place)
# 进行参数初始化
exe.run(fluid.default_startup_program())

# 定义两个要计算的变量
a1 = np.array([3, 2]).astype('int64')
b1 = np.array([1, 1]).astype('int64')

# 进行运算,并把y的结果输出
out_a, out_b, result = exe.run(program=fluid.default_main_program(),
                               feed={a.name: a1, b.name: b1},
                               fetch_list=[a, b, y])
print(out_a," + ", out_b," = ", result)

2.程序执行步骤

三、PaddlePaddle综合案例------实现简单线性回归

1.任务介绍


2.任务实现

示例3:简单线性回归

python 复制代码
#linear_regression.py的代码
import paddle.fluid as fluid
import numpy as np
import paddle
try:
    # 兼容PaddlePaddle2.0
    paddle.enable_static()
except:
    pass

# 定义一个简单的线性网络
x = fluid.data(name='x', shape=[None, 1], dtype='float32')
hidden = fluid.layers.fc(input=x, size=100, act='relu')
hidden = fluid.layers.fc(input=hidden, size=100, act='relu')
net = fluid.layers.fc(input=hidden, size=1, act=None)

# 获取预测程序
infer_program = fluid.default_main_program().clone(for_test=True)

# 定义损失函数
y = fluid.data(name='y', shape=[None, 1], dtype='float32')
cost = fluid.layers.square_error_cost(input=net, label=y)
avg_cost = fluid.layers.mean(cost)

# 定义优化方法
optimizer = fluid.optimizer.SGDOptimizer(learning_rate=0.01)
opts = optimizer.minimize(avg_cost)

# 创建一个使用CPU的执行器
place = fluid.CPUPlace()
exe = fluid.Executor(place)
# 进行参数初始化
exe.run(fluid.default_startup_program())

# 定义训练和测试数据
x_data = np.array([[1.0], [2.0], [3.0], [4.0], [5.0]]).astype('float32')
y_data = np.array([[3.0], [5.0], [7.0], [9.0], [11.0]]).astype('float32')

# 开始训练100个pass
for pass_id in range(100):
    train_cost = exe.run(program=fluid.default_main_program(),
                         feed={x.name: x_data, y.name: y_data},
                         fetch_list=[avg_cost])
    print("Pass:%d, Cost:%0.5f" % (pass_id, train_cost[0]))


test_data = np.array([[6.0]]).astype('float32')
# 开始预测
result = exe.run(program=infer_program,
                 feed={x.name: test_data},
                 fetch_list=[net])
print("当x为6.0时,y为:%0.5f" % result[0][0][0])

四、PaddlePaddle数据准备

1.什么是数据准备

2.为什么需要数据准备

示例4:reader数据准备


python 复制代码
# 04_reader_demo.py
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 reader():  # 迭代
# for data in shuffle_reader(): # 对随机读取器进行迭代
for data in batch_reader():  # 对批量随机读取器进行迭代
    print(data, end="")

3.预测模型保存和加载




4.fluid API结构图

五、PaddlePaddle综合案例------实现波士顿房价预测

1.数据集及任务

2.任务思路

3.执行结果

示例5:波士顿房价预测



python 复制代码
#uci_housing_linear.py的代码
import paddle.fluid as fluid
import paddle
import paddle.dataset.uci_housing as uci_housing
import numpy
try:
    # 兼容PaddlePaddle2.0
    paddle.enable_static()
except:
    pass

# 定义一个简单的线性网络
x = fluid.data(name='x', shape=[None, 13], dtype='float32')
hidden = fluid.layers.fc(input=x, size=100, act='relu')
hidden = fluid.layers.fc(input=hidden, size=100, act='relu')
net = fluid.layers.fc(input=hidden, size=1, act=None)

# 获取预测程序
infer_program = fluid.default_main_program().clone(for_test=True)

# 定义损失函数
y = fluid.data(name='y', shape=[None, 1], dtype='float32')
cost = fluid.layers.square_error_cost(input=net, label=y)
avg_cost = fluid.layers.mean(cost)

# 定义优化方法
optimizer = fluid.optimizer.SGDOptimizer(learning_rate=0.01)
opts = optimizer.minimize(avg_cost)

# 创建一个使用CPU的执行器
place = fluid.CPUPlace()
exe = fluid.Executor(place)
# 进行参数初始化
exe.run(fluid.default_startup_program())

# 从paddle接口中获取房价数据集,使用房价数据进行训练和测试
train_reader = paddle.batch(reader=uci_housing.train(), batch_size=128)
test_reader = paddle.batch(reader=uci_housing.test(), batch_size=128)

# 定义输入数据维度
feeder = fluid.DataFeeder(place=place, feed_list=[x, y])

# 开始训练和测试
for pass_id in range(300):
    # 开始训练并输出最后一个batch的损失值
    train_cost = 0
    for batch_id, data in enumerate(train_reader()):
        train_cost = exe.run(program=fluid.default_main_program(),
                             feed=feeder.feed(data),
                             fetch_list=[avg_cost])
    print("Pass:%d, Cost:%0.5f" % (pass_id, train_cost[0][0]))

# 开始测试
for data in test_reader():
    infer_data = numpy.array([data[0] for data in data]).astype("float32")
    infer_label = numpy.array([data[1] for data in data]).astype("float32")
    infer_result = exe.run(program=infer_program,
                           feed={x.name: infer_data},
                           fetch_list=[net])
    # 把每个预测结果都输出
    for i in range(len(infer_label)):
        print('预测结果:%f, 真实结果:%f' % (infer_result[0][i][0], infer_label[i][0]))

后记:

●本博客基于B站开源学习资源,是作者学习的笔记记录,仅用于学习交流,不做任何商业用途!

相关推荐
jndingxin29 分钟前
OpenCV运动分析和目标跟踪(2)累积操作函数accumulateSquare()的使用
人工智能·opencv·目标跟踪
weixin_7503355229 分钟前
Datawhale X 南瓜书 task02学习笔记
笔记·python·学习
火眼998839 分钟前
《使用 LangChain 进行大模型应用开发》学习笔记(四)
人工智能·笔记·langchain·ai编程
小草cys1 小时前
GPT-4o在matlab编程中性能较好,与智谱清言相比
人工智能
罗小罗同学1 小时前
困扰霍金和蔡磊等人的渐冻症,能否在医学AI领域寻找到下一个解决方案?|个人观点·24-09-22
数据库·人工智能·医学图像处理·医学人工智能·渐冻症
qq_172805591 小时前
Kafka-Go学习
开发语言·学习·golang·kafka·go
kolaseen1 小时前
tensorflow同步机制
人工智能·python·深度学习·机器学习·tensorflow
waterHBO1 小时前
TensorFlow 笔记
人工智能·笔记·tensorflow
橙子小哥的代码世界1 小时前
深度学习03-神经网络02-激活函数
人工智能·深度学习·神经网络
专家大圣2 小时前
YOLOv10:深度剖析与应用前景展望
人工智能·yolo·目标跟踪