找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2700|回复: 0
收起左侧

百度飞桨七日打卡学习心得 神经网络与深度学习

[复制链接]
ID:237527 发表于 2020-4-7 14:21 | 显示全部楼层 |阅读模式
百度飞桨学习心得
时间过得飞快,转眼7天的课程已经接近尾声,从第一天的新冠疫情可视化,到最后的人流密度检测,从易到难,我从中学到了很多,以前只是听说过神经网络、深度学习,但是并不了解它们是一个怎样的结构,它是如何像人一样具有的学习能力,现在已经知道了深度学习是什么,怎么构建配置网络,怎么训练出模型,怎么来测试模型的好与坏,通过观察输出信息来调整自己网络的参数。
这个课程给我最大的感受就是这里的老师很热情,每天晚上老师都给我们讲解今天要学习的内容,而且详细的讲解作业的代码,同时还在群里解答我们学习过程中遇到的问题所在,我觉得这里的老师非常的负责任,就是这样的学习环境我们才开始慢慢了解了百度飞桨这一深度学习平台,是一个集深度学习训练和预测框架、模型库、工具组件和服务平台为一体,拥有兼顾灵活性和高性能的开发机制、工业级的模型库、超大规模分布式训练技术、高速推理引擎以及系统化的社区服务等五大优势,致力于让深度学习技术的创新与应用更简单。下面就说下我在课程中所学到的知识。
第一天新冠疫情可视化,老师先给我们介绍了图像识别算法的定义和发展过程中遇到的问题,从早期的全局特征提取到中期的词袋模型、局部特征,识别效率和准确率在逐渐上升。接下来就是实战环节,我们用饼状图显示全国疫情首先需要得到今日的数据,利用python自带的request模块爬取丁香园的公开的统计数据,并保存在文件中。代码如下:
1.png
2.png
接下来就是安装第三方库pyecharts ,如果下载时出现断线和速度过慢的问题导致下载失败,可以尝试使用清华镜像。 3.png
Echarts 是一个由百度开源的数据可视化工具,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。pyecharts api可以参考:pyecharts点org/#/zh-cn/chart_api 。
画饼状图用到的是pyecharts 模块中的Pie,就需要初始化饼状图的一些参数,包括颜色、内外半径、中心坐标、标签的排序方向和方式等等。
4.png
5.png
下图为最终显示效果图。
6.png
第二天基于深度学习的手势识别,首先我们先看下什么是深度神经网络。神经网络是基于感知机的扩展,而DNN可以理解为有很多隐藏层的神经网络。多层神经网络和深度神经网络DNN其实也是指的一个东西,DNN有时也叫做多层感知机(Multi-Layer perceptron,MLP)。从DNN按不同层的位置划分,DNN内部的神经网络层可以分为三类,输入层,隐藏层和输出层,如下图示例,一般来说第一层是输入层,最后一层是输出层,而中间的层数都是隐藏层。
7.png
下面开始介绍DNN神经网络的配置,我们输入的图片大小为3*100*100,全连接层第一层的输入为3*100*100,输出我们设为100,中间两个隐藏层都是100,100,激活函数都为relu,最后的输出层为100、10,激活函数为softmax,因为我们最终的分类为10所以输出通道为10,下面是前向传播函数,就是按照全连接层的顺序来写,需要注意的是输入的大小必须匹配上。
8.png
特别的地方是PaddlePaddled的用动态图进行训练,优化器选用SGD随机梯度下降,学习率为0.001.关于优化器的种类有很多,梯度下降法GD、批量梯度下降法BGD、随机梯度下降法SGD、Momentum、动量优化法、NAG(Nesterov accelerated gradient)、自适应学习率优化算法、AdaGrad、Adadelta、Adam: Adaptive Moment Estimation
他们各有优缺点,我们这里选择SGD由于每次参数更新仅仅需要计算一个样本的梯度,训练速度很快,即使在样本量很大的情况下,可能只需要其中一部分样本就能迭代到最优解,由于每次迭代并不是都向着整体最优化方向,导致梯度下降的波动非常大,更容易从一个局部最优跳到另一个局部最优,准确度下降。但是这就需要我们根据收敛速度慢慢调整学习率learning_rate。训练次数可根据损失loos和成功率acc来更改其大小。
9.png
我们将训练好的模型保存下来,接着就是测试我们模型的准确率,一个模型的好坏就是看其测试的准确率大小,准确率越高说明我们的模型的训练的很成功,错误的可能性更低。对于如何提高模型的准确率,我觉得有三个方面是非常重要的。第一个是增加训练的数据,神经网络的起源就是模仿人的神经元,我们常说见多识广,增加训练数据可以让我们的模型提取的特征更明显。第二个就是处理缺失值和异常值,对于连续变量,可以把缺失值替换成平均值、中位数、众数。对于分类变量,可以把变量作为一个特殊类别看待。你也可以建立模型预测缺失值。KNN 为处理缺失值提供了很好的方法。异常值:你可以删除这些条目,进行转换,分箱。如同缺失值,你也可以对异常值进行区别对待。第三个就是交叉验证,如果想提高准确率,我们必须使用交叉验证技术(cross validation)。交叉验证是数据建模领域最重要的概念之一。它是指,保留一部分数据样本不用来训练模型,而是在完成模型前用来验证。我们测试准确率就是使用交叉验证的方法
10.png
最后就是根据我们输入的数字图像,预测输出。
11.png
从第三天开始我们就开始学习不同的网络模型,讲解了卷积神经网络,并学习了经典的卷积神经网络模型LeNet、AlexNet、VGGNet、GoogleNet、ResNet。跟神经网络一样,卷积神经网络由神经元构成,这些神经元带有可学习的权重和偏差(bias)。每个神经元接收若干输入,并对输入进行加权求和,然后通过一个激活功能将它们传递出去,再用一个输出作为反应。整个神经网络有一个损失函数,我们为神经网络开发的所有贴士和技巧,仍然适用于卷积神经网络。一个卷积神经网络的典型架构。
12.png
学到现在感觉自己还是有很多的不足,想要深入了解神经网络、深度学习,还需要接着跟随着老师的步伐,百度飞桨平台是一个非常好的深度学习平台,回到学校我会向老师和同学们推荐这么好的学习环境,这么好的东西我不能自己独享,最后还是要感谢我们的老师,在这期间为我们解决问题,指引我们向前走。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表