<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平台官网,注册账号

  • 注册需要身份认证,认证成功后才能使用项目编辑、运行。
  • 百度目前发布新手任务赢算力时长活动。
    新手赢算力任务活动地址链接:https://aistudio.baidu.com/newbie
  • 百度目前发布每日运行即获赠8点GPU免费额度(最多8小时)。
    在这里插入图片描述
    在这里插入图片描述

(2)创建项目

项目创建举例:在这里插入图片描述在这里插入图片描述

(3)编辑运行

  • 由于众所周知的原因:作为学生的我们,经济比较紧张,作者选用免费版。(因人而异,量力而行)
  • 作者在此感谢百度提供的开源学习资源,同时也感谢其他公司、机构、组织、个人等提供的开源学习资源。在这里插入图片描述
    在这里插入图片描述
    基于jupyter notebook的编辑环境页面:在这里插入图片描述
    基于Linux的终端环境:在这里插入图片描述
    AI Studio 经典版环境使用说明地址链接:https://ai.baidu.com/ai-doc/AISTUDIO/sk3e2z8sb
    示例1:使用paddle进行加法操作
    这是paddle 1.x版本支持的调用编写方式:在这里插入图片描述
    在这里插入图片描述
#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可能对之前的版本进行升级,不再支持老版本的部分调用编写。

新版本实现加法:
在这里插入图片描述

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:执行两个张量计算

在这里插入图片描述

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:简单线性回归

#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数据准备

在这里插入图片描述
在这里插入图片描述

# 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:波士顿房价预测

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#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站开源学习资源,是作者学习的笔记记录,仅用于学习交流,不做任何商业用途!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/504407.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c语言例题,实现一个整型有序数组的二分查找

c语言中,有很多可以实现效果的方法,而在一个整型有序的数组中,我们可以使用二分查找的方法来实现对于一个数组中的元素查找。二分查找的优点在于本身需要的计算是比较少的,一次计算查找排除掉数组中一半的元素,尤其对于…

C语言自定义类型

本篇文章主要介绍三种自定义类型,分别是:结构体、联合体、枚举。 一.结构体 1.结构体类型的声明 直接举一个例子: //一本书 struct s {char name[10]; //名称char a; //作者int p; //价格 }; 2.特殊的声明 结构体也可以不写结构体标…

7_springboot_shiro_jwt_多端认证鉴权_自定义AuthenticationToken

1. 目标 ​ 本小节会先对Shiro的核心流程进行一次回顾,并进行梳理。然后会介绍如果应用是以API接口的方式提供给它方进行调用,那么在这种情况下如何使用Shiro框架来完成接口调用的认证和授权。 2. 核心架构 引用官方的架构图: 2.1 Subje…

数字化服务升级:数字乡村改善农民生活质量

随着信息技术的迅猛发展,数字化浪潮已经深入社会的各个角落,为人们的生活带来了翻天覆地的变化。在乡村地区,数字化服务的升级正在逐步改变农民的生活方式,提高他们的生活质量。本文将围绕数字化服务升级,探讨数字乡村…

微信小程序开发【从入门到精通】——页面导航

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

C++教学——从入门到精通 5.单精度实数float

众所周知&#xff0c;三角形的面积公式是(底*高)/2 那就来做个三角形面积计算器吧 到吗如下 #include"bits/stdc.h" using namespace std; int main(){int a,b;cin>>a>>b;cout<<(a*b)/2; } 这不对呀&#xff0c;明明是7.5而他却是7&#xff0c;…

【面试经典150 | 动态规划】最小路径和

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;动态规划方法二&#xff1a;空间优化 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题…

DELL服务器使用iDRAC升级BIOS等固件版本

前言 正值DELL推出DELL R730XD服务器最新的BIOS固件&#xff08;2.19.0 2024/3/18&#xff09;之际&#xff0c;本人也有合适的时间将手头的服务器BIOS固件进行升级操作。 本文博将DELL R730xd 的iDRAC8版本为例&#xff0c;介绍整个升级过程。其他DELL类型的服务器操作类似&…

探究贪心算法:特点与实际应用

探究贪心算法&#xff1a;特点与实际应用 探究贪心算法&#xff1a;特点与实际应用&#x1f4dd; 摘要&#x1f680; 引言&#x1f4cb; 正文内容&#xff08;详细介绍&#xff09;&#x1f4cc; 小结&#x1f4ca; 表格总结&#x1f3af; 总结&#x1f52e; 未来展望&#x1f…

一篇搞定AVL树+旋转【附图详解旋转思想】

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f648;个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…

将jupyter notebook文件导出为pdf(简单有效)

1.打开jupyter notebook笔记&#xff1a; 2.点击file->print Preview 3.在新打开的页面右键打印 4.另存为PDF 5.保存即可 6.pdf效果 &#xff08;可能有少部分图片显示不了&#xff09; 网上也有其他方法&#xff0c;比如将其转换为.tex再转为PDF等&#xff0c;但个人觉…

STM32的芯片无法在线调试的情况分析

问题描述 本博客的目的在于帮助网友尽快地解决问题&#xff0c; 避免浪费时间&#xff0c; 查漏补缺。 在stm32的开发过程中&#xff0c;有时会遇到"STM No Target connected"的错误提示&#xff0c;这说明MDK开发环境无法与目标设备进行通信&#xff0c;导致无法烧…

Node.js网上购物商城-计算机毕业设计源码99525

摘 要 随着社会的发展&#xff0c;计算机的优势和普及使得网上购物商城的开发成为必需。网上购物商城主要是借助计算机&#xff0c;通过对首页、站点管理&#xff08;轮播图、公告栏&#xff09;用户管理&#xff08;管理员、注册用户&#xff09;内容管理&#xff08;商城资讯…

数据可视化-ECharts Html项目实战(8)

在之前的文章中&#xff0c;我们学习了如何设置散点图涟漪效果与仪表盘动态指针效果。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢 今天的文章&#xff0c;会…

python基础——异常捕获【try-except、else、finally】

&#x1f4dd;前言&#xff1a; 这篇文章主要介绍一下python基础中的异常处理&#xff1a; 1&#xff0c;异常 2&#xff0c;异常的捕获 3&#xff0c;finally语句 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;C语言入门基础以及python入门…

C语言-写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

0xaaaaaaaa...等是什么&#xff1f;-CSDN博客https://blog.csdn.net/Jason_from_China/article/details/137179252 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define SWAP(num) (((num & 0xAAAAAAAA) >> 1) | ((num & 0x55555555) << …

FUSB302BMPX 可编程USB芯片控制器 接口集成电路 302B Type-C Control IC with PD

FUSB302BMPX是一种可编程的USB Type-C控制器&#xff0c;由安森美半导体公司生产。它支撑USB Type-C检测&#xff0c;包含衔接和方向&#xff0c;并集成了USB BMC功率输送协议的物理层&#xff0c;可完成高达100W的电源和角色交换。该控制器适用于希望完成DRP/SRC/SNK USB Type…

【C语言】宏定义

1. 预定义符号 C语言设置了一些预定符号&#xff0c;可以直接使用&#xff0c;预定义符号也是在预处理期间处理的。 __FILE__ //进⾏编译的源⽂件 __LINE__ //⽂件当前的⾏号 __DATE__ //⽂件被编译的⽇期 __TIME__ //⽂件被编译的时间 __STDC__ //如果编译器遵循ANSI C&…

Unix信号处理

信号的基本概念我已经在上一节中简单介绍了&#xff0c;大家可以去看我的上一篇博客&#xff1a; Unix中的进程和线程-2-CSDN博客 1.信号的产生 kill函数&#xff1a; #include <signal.h> #include <fcntl.h> #include<t_stdio.h> //自定义信号处理函数,n为…

JavaScript基础语法–变量

文章目录 认识JavaScript变量程序中变量的数据&#xff08;记录&#xff09;–变量变量的命名格式在Java script中变量定义包含两部分1. 变量声明&#xff08;高级JS引擎接下来定义一个变量&#xff09;2. 其他的写法 变量命名的规范&#xff08;遵守&#xff09;变量的练习a. …