【机器学习进程--02使用paddle框架对模型进行一个简单预测】

目录

前言

一、理论学习

二、初识paddle

  1.安装paddle

        1).查看cuda版本

        2).安装paddle

  2.使用paddle对简单模型预测

总结


前言

  本系列将会记录本人学习机器学习的进程,是我自己的一些心得与体会。将会记录自己的机器学习进程,如果有什么错误欢迎大家批评指正。今天带来的是机器学习的第二篇学习记录,分为两个部分:1.看了吴恩达老师的机器学习后的部分章节的感悟。2.对机器学习所使用的paddle框架进行一个环境搭建和对一个简单的模型预测。

一、理论学习

        小编是一个刚开始学习机器学习的小白,对于理论知识的部分。我是在跟着吴恩达老师的机器学习。老师讲得非常的详细,以下是吴恩达老师机器学习的课程链接。

吴恩达机器学习系列课程

        在1-3监督学习(知道数据集的“正确答案”)中,我们想在监督学习中对于每个数据集中的每个样本进行一个预测,得到一个“正确的答案”,比如房子的价格,判断一个肿瘤是否为良性。在监督学习中有两个经典问题分别是回归问题和分类问题。回归问题用来预测连续值的输出,分类问题用来预测离散值输出。

        在1-4无监督学习(事先不知道数据集的“正确答案”)中,对于给定的某个数据集无监督学习可能判定为该数据包,包含两个不同的簇,像下图这样。这样也就是聚类算法。在我们知道有什么算法,有一堆数据集我们不知道这堆数据集的类型,结构的时候。便使用聚类算法,将这些数据集划分为不同的簇,从而寻找这些类的结构,相似之处。 

 

二、初识paddle

        除了开始跟着吴恩达老师的机器学习课程,我也报名参加了飞桨Ai Studio-人工智能学习实训社区。下面的是链接,吴恩达老师上课讲的理论知识。这个社区提供来很多的项目供自己练手,还可以参加比赛。

飞桨AI Studio-人工智能实践社区

  1.安装paddle

        paddle官网:paddle安装教程

       ①如果你使用CPU则直接按照官网的安装教程即可。

       ②如果你使用的的GPU,那么安装GPU版本的时候需要先将cuda,和cudnn安装好。在安装cuda,cudnn之前一定要查看自己的电脑的cuda版本上限。那么要如何查看自己的cuda版本上限呢?去官网

        1).查看cuda版本

           在开始菜单中搜索NVIDIA控制面板或者桌面单击右键打开-->打开以后找到左下角的系统信息-->进入以后选择组件-->3D设置里面的NVCUDA64.dll便可查看。下图是操作流程,由此我们便可以去官网安装cuda,cudnn。这里推荐一位博主的安装教程,他说的很详细,大家可以参考。

 cuda安装教程(超详细)            

 

 

        2).安装paddle

           若你的cuda,cudnn都已经成功安装,并且测试成功了。便可按照官网给的安装指南进行操作。为了方便大家操作我把相关windows版本安装代码放在这里。如果这里没有你cuda版本,大家可以去官网进行操作。paddle安装教程

        windows版本cuda10.1:

python -m pip install paddlepaddle-gpu==2.3.2.post101 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

        windows版本cuda10.2:

python -m pip install paddlepaddle-gpu==2.3.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

        windows版本cuda11.1:

python -m pip install paddlepaddle-gpu==2.3.2.post111 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

        windows版本cuda11.2:

python -m pip install paddlepaddle-gpu==2.3.2.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

        windows版本cuda11.6:

python -m pip install paddlepaddle-gpu==2.3.2.post116 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

        3).验证paddle是否安装成功

 

           若安装完成如上图所示,可以输入python,进入python解释器以后输入import paddle,若不报错则再次输入paddle.utils.run_check().PaddlePaddle is installed successfully!能够成功显示则说明成功安装入库。如图所示

        4).卸载paddle

             CPU版本卸载paddle:

python -m pip uninstall paddlepaddle

            ​​​​​​​  GPU版本卸载paddle:     

python -m pip uninstall paddlepaddle-gpu

  2.使用paddle对简单模型预测

 

        在paddle框架下使用LeNet在MNINT数据集实现图像分类。这里是应用实践LeNet项目文档的链接。

        整体项目源码如下:

import paddle
#print(paddle.__version__)

from paddle.vision.transforms import Compose, Normalize

transform = Compose([Normalize(mean=[127.5],
                               std=[127.5],
                               data_format='CHW')])
# 使用transform对数据集做归一化
print('download training data and load training data')
train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=transform)
test_dataset = paddle.vision.datasets.MNIST(mode='test', transform=transform)
print('load finished')

import numpy as np
import matplotlib.pyplot as plt

train_data0, train_label_0 = train_dataset[0][0],train_dataset[0][1]
train_data0 = train_data0.reshape([28,28])
plt.figure(figsize=(2,2))
plt.imshow(train_data0, cmap=plt.cm.binary)
print('train_data0 label is: ' + str(train_label_0))

import paddle
import paddle.nn.functional as F
class LeNet(paddle.nn.Layer):
    def __init__(self):
        super(LeNet, self).__init__()
        self.conv1 = paddle.nn.Conv2D(in_channels=1, out_channels=6, kernel_size=5, stride=1, padding=2)
        self.max_pool1 = paddle.nn.MaxPool2D(kernel_size=2,  stride=2)
        self.conv2 = paddle.nn.Conv2D(in_channels=6, out_channels=16, kernel_size=5, stride=1)
        self.max_pool2 = paddle.nn.MaxPool2D(kernel_size=2, stride=2)
        self.linear1 = paddle.nn.Linear(in_features=16*5*5, out_features=120)
        self.linear2 = paddle.nn.Linear(in_features=120, out_features=84)
        self.linear3 = paddle.nn.Linear(in_features=84, out_features=10)

    def forward(self, x):
        x = self.conv1(x)
        x = F.relu(x)
        x = self.max_pool1(x)
        x = self.conv2(x)
        x = F.relu(x)
        x = self.max_pool2(x)
        x = paddle.flatten(x, start_axis=1,stop_axis=-1)
        x = self.linear1(x)
        x = F.relu(x)
        x = self.linear2(x)
        x = F.relu(x)
        x = self.linear3(x)
        return x
from paddle.metric import Accuracy
model = paddle.Model(LeNet())   # 用Model封装模型
optim = paddle.optimizer.Adam(learning_rate=0.001, parameters=model.parameters())

# 配置模型
model.prepare(
    optim,
    paddle.nn.CrossEntropyLoss(),
    Accuracy()
    )
# 训练模型
model.fit(train_dataset,
        epochs=2,
        batch_size=64,
        verbose=1
        )
model.evaluate(test_dataset, batch_size=64, verbose=1)

         上图是项目给的结果与我自己跑出来的结果进行对比,基本吻合。


总结

        这周学习了机器学习相关的课程,明白了监督学习和无监督学习的相关使用场景和区别。对于paddle框架有了一个初步的认识和了解。今天的分享就到此结束了,拜拜。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Taikonat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值