本周主要学习以下内容:
1. 深度学习平台介绍
包括TensorFlow、Caffe、JAX、MXNet、Torch/PyTorch、PaddlePaddle、MMdetection等,由于pytorch上手简单、学习速度快,主要学习了pytorch的基本使用。
2. pytorch简介及基本使用
PyTorch 是一个 Python 的深度学习库 。 它最初由 Facebook 人工智能研究小组开发 而优步的 Pyro 软件则用于概率编程 。到目前 据统计已有 80 的研究采用 PyTorch 包括 Google。
①pytorch的基本概念
张量(tensor):是一个物理量,对高维维数 ≥ 2) 的物理量进行“量纲分析 的一种工具。简单的可以理解为:一维数组称为矢量,二维数组为二阶张量,三维数组为三阶张量。例如,图像为二阶张量,彩图为三阶张量,视频为四阶张量等。
②计算图
用“结点”(nodes )和“线 ”( 的有向图来描述数学计算的图像。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入的起点 输出的终点,或者是读取 写入持久变量的终点。“线”表示“节点”之间的输入 输出关系。这些数据“线”可以输运“ size 可动态调整”的多维数据数组,即“张量”。可使用张量表示数据,使用 Dataset 、 DataLoader 读取样本数据和标签,使用变量 (Variable) 存储神经网络权值等参数,使用计算图 (computational graph) 来表示计算任务。通过对线性回归示例来掌握pytorch的使用。
3. 卷积神经网络基础
学习了卷积神经网络的进化史和一些基本概念。
①全连接网络:链接权过多,难算难收敛,同时可能进入局部极小值,也容易产生过拟合问题。
②局部连接网络:顾名思义,只有一部分权值连接。部分输入和权值卷积。
③对图像进行特征提取,设计卷积核,将输入与卷积核对应元素相乘再求和,得出图像的输出,其中对于输出后的矩阵大小要保持与输入一致,故涉及了填充和步幅填充( Padding ),也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常用 0 或者复制边界像素来进行填充。将每次滑动元素的数量称为步幅。接着引入多通道卷积,根据特征提取以及卷积核选取,可将对输入输出通道数进行控制。当出现特征过多时,可引入池化,即使用局部统计特征,如均值或最大值。
④卷积神经网络结构
构成:由多个卷积层和下采样层构成,后面可连接全连接网络
卷积层:k 个滤波器
下采样层:采用 mean 或 max(通过调整步幅对宽度和高度控制,不改变通道数)
后面:连着全连接网络
4. LeNet5 网络
①网络介绍
每个卷积层使⽤5×5卷积核和⼀个sigmoid激活函数。这些层将输⼊映射到多个⼆维特征输出,通常同时增加通道的数量。第⼀卷积层有6个输出通道,⽽第⼆个卷积层有16个输出通道。每个2×2池操作(步幅2)通过空间下采样将维数减少4倍。卷积的输出形状由批量⼤小、通道数、⾼度、宽度决定。随网络深入,宽、高衰减,通道数增加。
因此,卷积神经⽹络(CNN)是⼀类使⽤卷积层的⽹络。在卷积神经⽹络中,我们组合使⽤卷积层、⾮线性激活函数和汇聚层。为了构造⾼性能的卷积神经⽹络,我们通常对卷积层进⾏排列,逐渐降低其表⽰的空间分辨率,同时增加通道数。在传统的卷积神经⽹络中,卷积块编码得到的表征在输出之前需由⼀个或多个全连接层进⾏处理。
②误差的反向传播:采用经典BP网络,利用下采样层,学习了局部误差如何从卷积层传到下采样层以及如何在采样层进行回传,并进行举例,对数字7进行卷积神经网络可视化。
5. 基本卷积神经网络
①AlexNet
网络一共有 8 层可学习层 5 层卷积层和 3 层全连接层。池化层均采用最大池化,选用 ReLU 作为非线性环节激活函数,网络规模扩大,参数数量接近 6000 万,出现“多个卷积层 一个池化层”的结构,同时,随网络深入,宽、高衰减,通道数增加。