[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例

我使用的是基于ubuntu 20.04 的优麒麟系统(所以deepin linuxmint …都可参考)
最近参加了AI Studio上的课程,写写本地运行飞桨PaddlePaddle + Pycharm 安装运行的初体验,并附带了mnist手写识别案例。

[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第1张图片

课程链接:https://aistudio.baidu.com/aistudio/course/introduce/6771

目录

    • 安装 python
    • 安装 pip
    • 安装 Pycharm
    • PyCharm 创建 Paddle 项目
    • 下载 paddlepaddle包
    • 案例:MNIST手写数字识别
      • 完整代码+保存模型
      • 结果说明
      • 再次优化

安装 python

系统自带python,可以终端中用下面命令查看版本:

$ python --version

优麒麟自带python2.7 和 python3.8 两个版本,
如果找不到python命令,直接建立一个链接即可:

ln -s /usr/bin/python3 /user/bin/python

输入这个命令可以查看安装了哪些python

$ ls /usr/bin/python*

在这里插入图片描述
最后测试一下

$ python --version

在这里插入图片描述

安装 pip

测试是否安了 pip

$ pip --version

如果没有安装,用一下命令,下载安装脚本并安装pip

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py  
$ sudo python get-pip.py  

安装 Pycharm

官方下载地址:https://www.jetbrains.com/pycharm/download/#section=linux
我下载的是社区版本:pycharm-community-2020.3.3.tar.gz
在下载好的文件夹中,打开终端:

$ tar -zxvf pycharm-community-2020.3.3.tar.gz

解压出来的文件pycharm文件夹相当于绿色便携版本,直接可以运行的。
但是一般移动到 /usr/ 中,例如我直接把解压好的pycharm文件夹放到/usr/中

$ sudo mv pycharm/ /usr/

然后创建应用快捷方式:

$ sudo touch /usr/share/applications/pycharm.desktop 

利用gedit 、vim编辑快捷方式

$ sudo gedit /usr/share/applications/pycharm.desktop

复制下面的内容,然后保存退出

[Desktop Entry]
Version= 2020.3.3
Type=Application
Name=PyCharm
Icon=/usr/pycharm-community-2020.3.3/bin/pycharm.png
Exec="/usr/pycharm-community-2020.3.3/bin/pycharm.sh" %f
Comment=The Drive to Develop
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-pycharm

其中Icon是应用图标的位置,可以在网上下一个
然后就安装成功了。

PyCharm 创建 Paddle 项目

打开pycharm,New Project
[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第2张图片

  • Location:中输入项目地址
  • New environment using Virtualenv:建议创建虚拟的Python运行环境,这样不会对系统中python有任何修改
  • Base interpreter:python解释器来源于/usr/bin/python3.8

点 Create
[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第3张图片

下载 paddlepaddle包

File - Settings - Project: paddle - 点击Python Interpreter
[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第4张图片

点击左下角的 “+” 号
[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第5张图片
点击Mange Repositories - 点击+
添加国内源
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第6张图片
OK - 搜索 paddlepaddle - 安装即可
[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第7张图片

案例:MNIST手写数字识别

创建一个python脚本
File - New - Python File - 取名
[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第8张图片

完整代码+保存模型

复制粘贴以下代码,然后点击 Run - Run 'mnist’

import paddle
import numpy as np
import matplotlib.pyplot as plt

import paddle.vision.transforms as T

# 数据的加载和预处理
transform = T.Normalize(mean=[127.5], std=[127.5])

# 训练数据集
train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=transform)

# 评估数据集
eval_dataset = paddle.vision.datasets.MNIST(mode='test', transform=transform)

print('训练集样本量: {},验证集样本量: {}'.format(len(train_dataset), len(eval_dataset)))

print('图片:')
print(type(train_dataset[0][0]))
print(train_dataset[0][0])
print('标签:')
print(type(train_dataset[0][1]))
print(train_dataset[0][1])

# 可视化展示
plt.figure()
plt.imshow(train_dataset[0][0].reshape([28,28]), cmap=plt.cm.binary)
plt.show()

# 模型网络结构搭建
network = paddle.nn.Sequential(
    paddle.nn.Flatten(),           # 拉平,将 (28, 28) => (784)
    paddle.nn.Linear(784, 512),    # 隐层:线性变换层
    paddle.nn.ReLU(),              # 激活函数
    paddle.nn.Linear(512, 10)      # 输出层
)
# 模型封装
model = paddle.Model(network)

# 模型可视化
model.summary((1, 28, 28))

# 配置优化器、损失函数、评估指标
model.prepare(paddle.optimizer.Adam(learning_rate=0.001, parameters=network.parameters()),
              paddle.nn.CrossEntropyLoss(),
              paddle.metric.Accuracy())

# 启动模型全流程训练
model.fit(train_dataset,  # 训练数据集
          eval_dataset,  # 评估数据集
          epochs=5,  # 训练的总轮次
          batch_size=64,  # 训练使用的批大小
          verbose=1)  # 日志展示形式

# 模型评估,根据prepare接口配置的loss和metric进行返回
result = model.evaluate(eval_dataset, verbose=1)

print(result)

# 进行预测操作
result = model.predict(eval_dataset)

# 定义画图方法
def show_img(img, predict):
    plt.figure()
    plt.title('predict: {}'.format(predict))
    plt.imshow(img.reshape([28, 28]), cmap=plt.cm.binary)
    plt.show()

# 抽样展示
indexs = [2, 15, 38, 211]

for idx in indexs:
    show_img(eval_dataset[idx][0], np.argmax(result[0][idx]))

# 保存用于后续继续调优训练的模型
model.save('finetuning/mnist')

结果说明

[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第9张图片
下载数据集后,显示一张标签为5的图片

model.summary() 显示网络结构
[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第10张图片
训练5次epoch
[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第11张图片
验证数据集:
[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第12张图片
效果相当不错
然后会弹出几个预测的结果
[优麒麟ubuntu 20.04] 飞桨PaddlePaddle + Pycharm 安装运行初体验+mnist手写识别案例_第13张图片
最后模型保存在了finetuning中

再次优化

from paddle.static import InputSpec


# 模型封装,为了后面保存预测模型,这里传入了inputs参数
model_2 = paddle.Model(network, inputs=[InputSpec(shape=[-1, 28, 28], dtype='float32', name='image')])

# 加载之前保存的阶段训练模型
model_2.load('finetuning/mnist')

# 模型配置
model_2.prepare(paddle.optimizer.Adam(learning_rate=0.001, parameters=network.parameters()),
                paddle.nn.CrossEntropyLoss(),
                paddle.metric.Accuracy())

# 模型全流程训练
model_2.fit(train_dataset, 
            eval_dataset,
            epochs=2,
            batch_size=64,
            verbose=1)
# 再次保存
model_2.save('infer/mnist', training=False)

你学会了吗?

你可能感兴趣的:(paddlepaddle,ubuntu,深度学习,paddlepaddle)