(一)PaddlePaddle(深度学习框架)的搭建、使用

本文详细介绍了百度的PaddlePaddle深度学习框架,包括快速入门、线性回归算法实现以及卷积神经网络在MNIST手写数字识别中的应用。通过实例展示了如何定义常量、变量、神经网络模型,以及训练和预测过程,帮助读者理解PaddlePaddle的使用方法。

PaddlePaddle是百度公司2016年开源的深度学习框架,现如今可以方便部署到服务器、智能手机和嵌入式设备中。PaddlePaddle还开源大量常用的深度学习模型。

一、PaddlePaddle快速入门:

(1)PaddlePaddle的大部分API都在paddle.fluid中。接着定义两个PaddlePaddle常量x1和x2,形状是[2,2],也叫维度,并赋值为1,类型为int64,得到一个张良[[1,1],[1,1]],代码:


# PaddlePaddle的大部分API都在paddle.fluid中。
import paddle
# 兼容PaddlePaddle2.0
paddle.enable_static()

# 接着定义两个PaddlePaddle常量x1和x2,形状是[22],也叫维度,并赋值为1,类型为int64,得到一个张良[[11][11]]
x1 = fluid.layers.fill_constant(shape=[2, 2], value=1, dtype='int64')
x2 = fluid.layers.fill_constant(shape=[2, 2], value=1, dtype='int64')

# 将x1与x2两个张量相加
# PaddlePaddle支持使用算术运算符号,如改成x1+x2
y1 = fluid.layers.sum(x=[x1, x2])

# 然后创建一个执行器,执行器用于把数据传入模型中,并执行模型中。执行器可以使用place参数指定CPUGPU进行计算
# place = fluid.CUDAPlace(0)         # 使用GPU,其中0是指序号为0的显卡
place = fluid.CPUPlace()             # 使用CPU
exe = fluid.executor.Executor(place)
# 使用fluid.Executor()函数执行fluid.default_startup_program()函数,对整个PaddlePaddle程序进行参数随机初始化
exe.run(fluid.default_startup_program())

# PaddlePaddle中两个程序默认:default_startup_program()、default_main_program()
# 使用fluid.Executor()函数执行,主程序参数值是fluid.default_main_program()
result = exe.run(program=fluid.default_main_program(),
                 fetch_list=[y1])
print(result)

运行结果:

在这里插入图片描述

(2)PaddlePaddle定义两个变量,赋值,然后相加:

import paddle.fluid as fluid
import numpy as np
import paddle
# 兼容PaddlePaddle2.0
paddle.enable_static()

# PaddlePaddle的每层又有名称,定义两个张量,不需要指定形状和值,只指定变量的类型和名称(a,b)即可,如不指定名称,会默认设置名称
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())

# 用numpy创建两个形状[12]de1矩阵,
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)

运行结果:

在这里插入图片描述

二、PaddlePaddle的线性回归算法:

(1)深度神经网络的搭建:

1、单个神经元的模型就是有多个输入,经过求和、求积计算,然后再经过非线性函数(如ReLU等各种激活函数),最终输出
在这里插入图片描述
1、将多个神经元组合在一起,就构成了一个神经网络,依次有输入层、隐藏层、输出层。输入层的每个输入都与隐藏层连接,通过隐藏层计算,最终连接输出层进行输出;
2、在简单的神经网络模型的基础上,再在输入层和输出层之间增加多个隐藏层,会增加整个模型的深度。正因为有大量的隐藏层,所以称为深度神经网络模型;
在这里插入图片描述

(2)模型训练

# PaddlePaddle的线性回归算法
import numpy as np
import paddle
paddle.enable_static()
import paddle.fluid as fluid
import numpy

# 搭建一个简单的神经网络(1个输入层,2个隐藏层,1个输出层,即全连接层)
# 定义一个输入层:指定输入层的名称'x',形状和类型。shape的第一个参数是输入数据批量大小通常设置None,这样可以自动根据输入数据的批量大小变动,输入层都是float32类型
x = fluid.data(name='x', shape=[None, 1], dtype='float32')
# 定义两个隐藏层(大小无为100(神经元数量),激活函数为ReLU)
hidden = fluid.layers.fc(input=x, size=100, act='relu')
hidden = fluid.layers.fc(input=hidden, size=100, act='relu')
# 最后输出大小为1的全连接层,也叫输出层
net = fluid.layers.fc(<
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值