目录
前言
一、理论学习
二、初识paddle
1.安装paddle
1).查看cuda版本
2).安装paddle
2.使用paddle对简单模型预测
总结
前言
本系列将会记录本人学习机器学习的进程,是我自己的一些心得与体会。将会记录自己的机器学习进程,如果有什么错误欢迎大家批评指正。今天带来的是机器学习的第二篇学习记录,分为两个部分:1.看了吴恩达老师的机器学习后的部分章节的感悟。2.对机器学习所使用的paddle框架进行一个环境搭建和对一个简单的模型预测。
小编是一个刚开始学习机器学习的小白,对于理论知识的部分。我是在跟着吴恩达老师的机器学习。老师讲得非常的详细,以下是吴恩达老师机器学习的课程链接。
吴恩达机器学习系列课程
在1-3监督学习(知道数据集的“正确答案”)中,我们想在监督学习中对于每个数据集中的每个样本进行一个预测,得到一个“正确的答案”,比如房子的价格,判断一个肿瘤是否为良性。在监督学习中有两个经典问题分别是回归问题和分类问题。回归问题用来预测连续值的输出,分类问题用来预测离散值输出。
在1-4无监督学习(事先不知道数据集的“正确答案”)中,对于给定的某个数据集无监督学习可能判定为该数据包,包含两个不同的簇,像下图这样。这样也就是聚类算法。在我们知道有什么算法,有一堆数据集我们不知道这堆数据集的类型,结构的时候。便使用聚类算法,将这些数据集划分为不同的簇,从而寻找这些类的结构,相似之处。
除了开始跟着吴恩达老师的机器学习课程,我也报名参加了飞桨Ai Studio-人工智能学习实训社区。下面的是链接,吴恩达老师上课讲的理论知识。这个社区提供来很多的项目供自己练手,还可以参加比赛。
飞桨AI Studio-人工智能实践社区
paddle官网:paddle安装教程
①如果你使用CPU则直接按照官网的安装教程即可。
②如果你使用的的GPU,那么安装GPU版本的时候需要先将cuda,和cudnn安装好。在安装cuda,cudnn之前一定要查看自己的电脑的cuda版本上限。那么要如何查看自己的cuda版本上限呢?去官网
在开始菜单中搜索NVIDIA控制面板或者桌面单击右键打开-->打开以后找到左下角的系统信息-->进入以后选择组件-->3D设置里面的NVCUDA64.dll便可查看。下图是操作流程,由此我们便可以去官网安装cuda,cudnn。这里推荐一位博主的安装教程,他说的很详细,大家可以参考。
若你的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
在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框架有了一个初步的认识和了解。今天的分享就到此结束了,拜拜。