Paddle 深度学习笔记

这些天我收获了什么

Day1 python信息可视化

使用百度开源可视化框架pyecharts,绘制基本图表,地图图表
Paddle 深度学习笔记_第1张图片

pip install pyechartspip install pyecharts

demo:

//导入柱状图-Bar
from pyecharts import Bar
//设置行名
columns = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
//设置数据
data1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
data2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
//设置柱状图的主标题与副标题
bar = Bar("柱状图", "一年的降水量与蒸发量")
//添加柱状图的数据及配置项
bar.add("降水量", columns, data1, mark_line=["average"], mark_point=["max", "min"])
bar.add("蒸发量", columns, data2, mark_line=["average"], mark_point=["max", "min"])
//生成本地文件(默认为.html文件)
bar.render()

Day2 传统DNN全连接网络实现手势识别

第二天的理论课程让我学习了深度学习的三个步骤:
1.模型建立:选择什么样的网络结构以及选择多少层的网络结构
2.损失函数:选择什么样的损失函数如:平方误差、交叉熵等
3.参数学习:梯度下降、反向传播
Day2的DNN网络为全连接神经网络
首先神经网络的结构:神经网络(NN)第一层为input层,最后一层为output层,而在input和output中间的层则被称为hidden层
Paddle 深度学习笔记_第2张图片
具体实现:

class MyDNN(fluid.dygraph.Layer):
    def __init__(self):
        super(MyDNN,self).__init__()
        self.hidden1 = Linear(100, 100,act='relu')
        self.hidden2 = Linear(100, 100,act='relu')
        self.hidden3 = Linear(100, 100,act='relu')
        self.hidden4 = Linear(3*100*100, 10, act='softmax')
    def forward(self,input):
        x = self.hidden1(input)
        x = self.hidden2(x)
        x = self.hidden3(x)
        x = fluid.layers.reshape(x, shape=[-1, 3*100*100])
        y = self.hidden4(x)
        return y

使用DNN全连接4层神经网络结构,经过前向计算后即可完成对手势图片的学习。此方法的缺点是:全连接DNN的结构里下层神经元和所有上层神经元都能够形成连接,从而导致参数数量膨胀。
Paddle 深度学习笔记_第3张图片

Day3 卷积神经网络实现车牌识别

第三天通过对全连接神经网络缺点的思考,使用卷积神经网络来改进全连接神经网络模型不够灵活和参数过多的问题。今日学习到了卷积神经网络的特性,实践部分实现了CNN网络对车牌的识别。
经典CNN网络模型有很多,如:LeNet、AlexNet、VGG-16、GoogleNet、DesNet等,其中LeNet定义了卷积神经网络的最基本的结构:卷积层、池化层、全连接层。
Paddle 深度学习笔记_第4张图片
CNN网络采用上层神经元与下层神经元局部链接的形式较大地降低了参数大小,而且共享卷积核,对高维数据处理无压力。对于CNN的更多知识可参考这篇博客:卷积神经网络(CNN)入门讲解
关注专栏

今天的项目是通过LeNet训练识别车牌

class MyLeNet(fluid.dygraph.Layer):
    def __init__(self):
        super(MyLeNet,self).__init__()
        self.hidden1_1 = Conv2D(1, 28, 5, 1)    #通道数,卷积核个数,卷积核大小
        self.hidden1_2 = Pool2D(pool_size=2, pool_type='max', pool_stride=1)
        self.hidden2_1 = Conv2D(28, 32, 3, 1)
        self.hidden2_2 = Pool2D(pool_size=2, pool_type='max', pool_stride=1)
        self.hidden3 = Conv2D(32, 32, 3, 1)
        self.hidden4 = Linear(32*10*10, 65, act='softmax')
    def forward(self,input):
        x = self.hidden1_1(input)
        x = self.hidden1_2(x)
        x = self.hidden2_1(x)
        x = self.hidden2_2(x)
        x = self.hidden3(x)
        x = fluid.layers.reshape(x, shape=[-1, 32*10*10])
        y = self.hidden4(x)
        return y

Paddle 深度学习笔记_第5张图片

Day4 VGG网络实现口罩识别

百度在2020年疫情期间首个开源了口罩识别项目,为疫情防控提供了重要的解决方案.
VGG网络的特点是简单,体现在:

  1. 卷积层均采用相同的卷积核参数

  2. 池化层均采用相同的池化核参数

  3. 模型是由若干卷积层和池化层堆叠的方式构成,比较容易形成较深的网络结构(2014年)
    Paddle 深度学习笔记_第6张图片
    VGG16的卷积层和池化层可以分为不同的块(Block),每一个块内包含若干个卷积层和一个池化层,并且同一个块内,卷积层的通道数是相同的
    Paddle 深度学习笔记_第7张图片
    结合上图,VGG的输入图像为2242243

  4. 通道数翻倍,由64依次增加到128,再到256,直至512保持不变,不再翻倍

  5. 高和宽变减半,由 224→112→56→28→14→7
    Paddle 深度学习笔记_第8张图片Paddle 深度学习笔记_第9张图片
    Paddle 深度学习笔记_第10张图片
    Paddle 深度学习笔记_第11张图片

Day5 人流密度统计比赛

对入门选手降低了比赛难度,json文件指明了人物的x,y坐标和忽略的人物坐标。可采用CNN或者baseline网络模型,博主对于深度学习还是小白,目前只优化到30名T-T
在这里插入图片描述
图片示例:
Paddle 深度学习笔记_第12张图片
根据json中指明的人物坐标对人物进行切割:
Paddle 深度学习笔记_第13张图片
这次比赛给我的最大感受就是:
1.技术之路很漫长,需要坚持走下去,一点一滴的积累
2.百度的老师给我的帮助很多,在此感谢GT。
3.对于比赛还是要多尝试不放弃,之前最好成绩是60名,本来准备放弃了但是经过18个小时的努力,名次上升到了30(写感悟的时候后台还在跑训练呢)。哈哈。

Day6 PaddleSlim模型压缩

Paddle 深度学习笔记_第14张图片
paddleslim对于部署在低端芯片的设备意义重大,它可将模型参数压缩,使模型体积更小。减少CPU内存占用,提高速度。
PaddleSlim包含所有的主流模型压缩方法:

  1. 卷积网络通道数裁剪:将大模型参数量变小。
  2. 将float32压缩至int8运算,减小计算量和模型体积。
  3. 蒸馏:将大模型知识迁移到小模型上,将小模型的精度提高。
  4. nas:以模型大小和推理速度为约束的模型结构搜索。
    项目文档:https://paddlepaddle.github.io/PaddleSlim/

学习平台

1.通过Ai Studio获取课程学习信息
官网链接:百度AI Studio

总结

1.通过这次学习认识了许多志同道合的朋友同学
2.舍不得认真负责的老师,经常自愿加班到很晚为我们解答问题,再次感谢GT
在这里插入图片描述
3.这7天对于深度学习算是全方位的做了一个了解,也通过细心的老师做了几个小项目。
4.希望以后还能参加这类活动。是提升自己的一次好机会
最后,欢迎各位技术同学参加活动!

你可能感兴趣的:(总结)