人工智能学习笔记(1)——使用深度学习框架完成手写数字识别

感觉学习人工智能算法很痛苦,以前的数据结构没有好好学,因此希望通过记笔记来让自己学得好一点。

环境:AI Studio 中的notebook

注:代码示例来源于我的人工智能课老师,一些部分的解释来源于飞桨的文档中,另一些会标注出处,侵删。

分析老师给的代码示例

(1)查看当前paddlepaddle环境

查看当前paddlepaddle环境

    没什么可说的。

(2) 完成mnist数据集的加载

完成mnist数据集的加载

1、paddle.vision.transforms :飞桨框架内置图像数据集的预处理。

2、class paddle.vision.transforms.Compose(transforms):将用于数据集预处理的接口以列表的方式进行组合。

3、class paddle.vision.transforms.Normalize(mean=0.0std=1.0data_format='CHW'to_rgb=Falsekeys=None):图像归一化处理,支持两种方式: 1. 用统一的均值和标准差值对图像的每个通道进行归一化处理; 2. 对每个通道指定不同的均值和标准差值进行归一化处理。

4、class paddle.vision.datasets.MNIST:飞桨框架自带的MNIST数据集。

(3)查看其中一条信息:

查看其中一条信息

1、第五行:将图像新建为28x28的像素矩阵

2、plt.imshow(some_digmit_image, cmap = matplotlib.cm.binary):plt.imshow()函数负责对图像进行处理,并显示其格式,但是不能显示。其后跟着plt.show()才能显示出来。cmap即colormaps,图谱。(来源于plt.imshow() - 简书 (jianshu.com)

(4)网络构建

网络构建

1、paddle.nn 目录下包含飞桨框架支持的神经网络层和相关函数的相关API。

2、class paddle.nn.Linear(in_featuresout_featuresweight_attr=Nonebias_attr=Nonename=None):线性变换层,详见Linear-API文档-PaddlePaddle深度学习平台

3、paddle.nn.Flatten(start_axis=1stop_axis=- 1):实现将一个连续维度的Tensor展平成一维Tensor。

4、paddle.nn.functional.relu(xname=None):relu激活层。计算公式:relu(x)=max(0,x)

5、paddle.nn.functional.softmax(xaxis=- 1dtype=Nonename=None):实现了softmax层,详见softmax-API文档-PaddlePaddle深度学习平台

6、该步骤是为了定义一个简单的多层感知器,一共有三层,两个大小为100的隐层和一个大小为10的输出层,因为MNIST数据集是手写0到9的灰度图像,类别有10个,所以最后的输出大小是10。最后输出层的激活函数是Softmax,所以最后的输出层相当于一个分类器。加上一个输入层的话,多层感知器的结构是:输入层-->>隐层-->>隐层-->>输出层。

(5)基于基础API,完成模型的训练与预测

模型的训练

1、train_loader:加载训练数据。

class paddle.io.DataLoader(datasetfeed_list=Noneplaces=Nonereturn_list=Falsebatch_sampler=Nonebatch_size=1shuffle=Falsedrop_last=Falsecollate_fn=Nonenum_workers=0use_buffer_reader=Trueuse_shared_memory=Truetimeout=0worker_init_fn=None):DataLoader返回一个迭代器,该迭代器根据 batch_sampler 给定的顺序迭代一次给定的 dataset。

2、model.train()和model.eval():如果模型中有BN层(Batch Normalization)和Dropout,需要在训练时添加model.train(),在测试时添加model.eval()。其中model.train()是保证BN层用每一批数据的均值和方差,而model.eval()是保证BN用全部训练数据的均值和方差;而对于Dropout,model.train()是随机取一部分网络连接来训练更新参数,而model.eval()是利用到了所有网络连接。(来源于model.train()与model.eval()的用法_Qy1997的博客-CSDN博客

3、epochs:定型周期,指的就是训练过程中数据将被“轮”多少次。 亦即应当完整遍历数据集多少次(一次为一个epoch)。(来源于 tensorflow学习笔记--深度学习中的epochs,batch_size,iterations详解_STHSF的地盘-CSDN博客_tensorflow中的epoch,包括其他的参数也提到了)

4、class paddle.optimizer.Adam(learning_rate=0.001beta1=0.9beta2=0.999epsilon=1e-08parameters=Noneweight_decay=Nonegrad_clip=Nonename=Nonelazy_mode=False):利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。详见Adam-API文档-PaddlePaddle深度学习平台

5、model.parameters():Weights和Bais参数。

6、paddle.nn.functional.cross_entropy(inputlabelweight=Noneignore_index=- 100reduction='mean'soft_label=Falseaxis=- 1name=None):实现了softmax交叉熵损失函数。该函数会将softmax操作、交叉熵损失函数的计算过程进行合并,从而提供了数值上更稳定的计算。详见cross_entropy-API文档-PaddlePaddle深度学习平台

7、paddle.metric.accuracy(inputlabelk=1correct=Nonetotal=Nonename=None):使用输入和标签计算准确率。 如果正确的标签在topk个预测值里,则计算结果加1。注意:输出正确率的类型由input类型决定,input和lable的类型可以不一样。

8、optim.clear_grad(), loss.backward(), optim.step():可以看理解optimizer.zero_grad(), loss.backward(), optimizer.step()的作用及原理_PanYHHH的博客-CSDN博客_loss.backward

模型的检验
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容