【深度学习主题月】 PaddlePaddle
让天涯 发布于2019-10-16 浏览:1590 回复:0
0
收藏

一、安装PaddlePaddle:
系统环境要求如下,具体可以参考官方文档说明:https://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/beginners_guide/install/install_Windows.html

如未安装Python,需要先下载相应的Python版本安装:https://www.python.org/

(1-1)安装PaddlePaddle
安装好Python后,可以执行以下命令判断当前操作环境能否安装PaddlePaddle:

python3 -c "import platform;print(platform.architecture()[0]);print(platform.machine())"

windows 10 系统下,可以使用快捷键 Ctrl+R 调出“运行”窗口,输入”cmd“调出“命令提示符”窗口,或者在“菜单-Windows系统”下找到“命令提示符”,然后输入Python命令,执行操作。

若执行后,下面的第一行输出的是 "64bit",第二行输出的是 "x86_64"、"x64" 或 "AMD64" ,则说明操作环境符合条件,可以安装PaddlePaddle:

执行以下命令安装PaddlePaddle(使用清华源):

python3 -m pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple

或者可以执行下面的命令完成CPU版本的快速安装:

pip install -U paddlepaddle

安装完成后,提示建议升级pip,可以根据提示升级pip:

(1-2)验证安装
使用 python3 进入python解释器,输入import paddle.fluid ,再输入 paddle.fluid.install_check.run_check()。
如果出现 Your Paddle Fluid is installed succesfully!,说明您已成功安装。

二、快速使用
(2-1)Tensor操作
通过下述例子,基本了解如何使用Fluid操作数据。

1、使用Fluid创建5个元素的一维数组,其中每个元素都为1

#导入fluid库
import paddle.fluid as fluid
# 定义数组维度及数据类型,可以修改shape参数定义任意大小的数组
data = fluid.layers.ones(shape=[5], dtype='int64')
# 在CPU上执行运算
place = fluid.CPUPlace()
# 创建执行器
exe = fluid.Executor(place)
# 执行计算
ones_result = exe.run(fluid.default_main_program(),
                        # 获取数据data
                        fetch_list=[data],
                        return_numpy=True)
# 输出结果
print(ones_result[0])

输入后,可以得到结果:[1 1 1 1 1]

2、使用Fluid将两个数组按位相加

# 调用 elementwise_op 将生成的一维数组按位相加
add = fluid.layers.elementwise_add(data,data)
# 定义运算场所
place = fluid.CPUPlace()
exe = fluid.Executor(place)
# 执行计算
add_result = exe.run(fluid.default_main_program(),
                 fetch_list=[add],
                 return_numpy=True)
# 输出结果
print (add_result[0])

可以得到结果:[2 2 2 2 2]

3、使用Fluid转换数据类型

# 将一维整型数组,转换成float64类型
cast = fluid.layers.cast(x=data, dtype='float64')
# 定义运算场所执行计算
place = fluid.CPUPlace()
exe = fluid.Executor(place)
cast_result = exe.run(fluid.default_main_program(),
                 fetch_list=[cast],
                 return_numpy=True)
# 输出结果
print(cast_result[0])

可以得到结果:[1. 1. 1. 1. 1.]

(2-2)运行线性回归模型
接下来,试着创建一个test.py,并粘贴下面的代码,来学习使用简单的线性回归模型,快速求解4元一次方程。

为管理方便,我新建一个文件夹“PaddlePaddle”,存放 test.py 源代码文件,并将命令提示符的位置定位到当前文件夹:

#加载库
import paddle.fluid as fluid
import numpy as np
#生成数据
np.random.seed(0)
outputs = np.random.randint(5, size=(10, 4))
res = []
for i in range(10):
        # 假设方程式为 y=4a+6b+7c+2d
        y = 4*outputs[i][0]+6*outputs[i][1]+7*outputs[i][2]+2*outputs[i][3]
        res.append([y])
# 定义数据
train_data=np.array(outputs).astype('float32')
y_true = np.array(res).astype('float32')

#定义网络
x = fluid.layers.data(name="x",shape=[4],dtype='float32')
y = fluid.layers.data(name="y",shape=[1],dtype='float32')
y_predict = fluid.layers.fc(input=x,size=1,act=None)
#定义损失函数
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.05)
sgd_optimizer.minimize(avg_cost)
#参数初始化
cpu = fluid.CPUPlace()
exe = fluid.Executor(cpu)
exe.run(fluid.default_startup_program())
##开始训练,迭代500次
for i in range(500):
        outs = exe.run(
                feed={'x':train_data,'y':y_true},
                fetch_list=[y_predict.name,avg_cost.name])
        if i%50==0:
                print ('iter={:.0f},cost={}'.format(i,outs[1][0]))
#存储训练结果
params_dirname = "result"
fluid.io.save_inference_model(params_dirname, ['x'], [y_predict], exe)

# 开始预测
infer_exe = fluid.Executor(cpu)
inference_scope = fluid.Scope()
# 加载训练好的模型
with fluid.scope_guard(inference_scope):
        [inference_program, feed_target_names,
         fetch_targets] = fluid.io.load_inference_model(params_dirname, infer_exe)

# 生成测试数据
test = np.array([[[9],[5],[2],[10]]]).astype('float32')
# 进行预测
results = infer_exe.run(inference_program,
                                                feed={"x": test},
                                                fetch_list=fetch_targets)
# 给出题目为 【9,5,2,10】 输出y=4*9+6*5+7*2+10*2的值
print ("9a+5b+2c+10d={}".format(results[0][0]))

得到结果:9a+5b+2c+10d=[99.946]

输出结果应是一个近似等于100的值,每次计算结果略有不同。

如果出现如下错误,则有可能是test.py文件编码出错,需要将其改为UTF-8,然后重新运行即可:

三、小结
本文简单介绍了如何安装PandlePandle,并如何使用Fluid进行简单的数组操作和运行线性回归模型,大家可以去官方网站进行更深入的学习,学习”数字识别“,”图像分类“,”机器翻译“等教程,如果非常熟悉Fluid,还可以使用Fluid定义自己的Operator。

官方教程:https://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/beginners_guide/index_cn.html

 

收藏
点赞
0
个赞
TOP
切换版块