作者文章归档:justlin_01

动手学习深度学习系列笔记——CPU和GPU


CPU和GPU

本节目录:

1.1 提升CPU利用率一:

  • 在计算a+b之前,需要准备数据
  • 主内存->L3->L2->L1->寄存器

    • L1访问延时:0.5ms
    • L2访问延时:7ns(14XL1)
    • 主内存访问延

Read more

动手学习深度学习系列笔记——残差网络resnet


目录

- 残差网络(ResNet)

- 函数类

- 残差块

- ResNet模型

- 训练模型

- 总结

残差网络(ResNet)

随着我们设计越来越深的网络,深刻理解“新添加的层如何提升神经网络的性能”变得至关重要。更重要的是设计网络的能力,在ResNet这种网络中,添加层会使网络更具表现力

函数类

  • 假设有一类特定的神经网络架构F,它包括学习速率和其他超参数设置。 对于所有f∈F,存在一些参数集(例如权重和偏置),这些参数可以通过在合适的数据集上进行训练而获得。 现在假设f∗是我们真正想要找到的函数,如果是f∗∈F,那我们可以轻而易举的训练得到它,但通常我们不会那么幸运。 相反,我们将尝试

Read more

动手学习深度学习系列笔记——批量归一化


批量归一化

批量归一化

深层神经网络的训练,尤其是使网络在较短时间内收敛是十分困难的,批量归一化[batch normalization]是一种流行且有效的技术,能加速深层网络的收敛速度,目前仍被广泛使用。

训练深层网络时的问题

深度神经网络在训练时会遇到一些问题:

  • 收敛速度慢:
    • 由于训练时先正向传播后反向传播,且每层的梯度一般较小,若网络较深,则反向传播时会出现类似于梯度消失的现象,导致距离数据更近的层梯度较小,收敛慢,而距离输出更

Read more

动手学习深度学习系列笔记——GooLeNet


GooLeNet

目录

含并行连结的网络

  • GoogLeNet吸收了NiN中串联网络的思想,并在此基础上做了改进。我们往往不确定到底选取什么样的层效果更好,到底是3X3卷积层还是5X5的卷积层,诸如此类的问题是GooLeNet选择了另一种思路“小学生才做选择,我全都要”,这也使得GooLeNet成为了第一个模型中超过1000个层的模型。

Inception块

  • 在GoogLeNet中,基本的卷积块被称为Inception块(Inception block)

  • Inception块由四条并行路径

Read more

动手学习深度学习系列笔记——网络中的网络(NiN)


26-网络中的网络(NiN)

1. 动机

全连接层的问题

  • 卷积层需要的参数较少
  • 而卷积层后的第一个全连接层参数较多

以VGG为例(图示),全连接层需要先Flatten,输入维度为512x7x7,输出维度为4096,则需要参数个数为512x7x7x4096=102M。

2. NiN块

  • 核心思想:一个卷积层后面跟两个1x1的卷积层,后两层起到全连接层的作用。

3. NiN架构

  • 无全连接层
  • 交替使用NiN块和步幅为2的最大池化层
    • 逐步减小高宽和增大通道数
  • 最后使用全局平均池化得到输出
    • 其输入通道是类别数

4. NiN Networks

NiN架构如上图右边所示,若干个Ni

Read more

动手学习深度学习系列笔记——使用块的网络 VGG


25 使用块的网络 VGG

目录

Alexnet最大的问题在于长得不规则,结构不甚清晰,也不便于调整。想要把网络做的更深更大需要更好的设计思想和标准框架。

1. VGG块

直到现在更深更大的模型也是我们努力的方向,在当时AlexNet比LeNet更深更大得到了更好的精度,大家也希望把网络做的更深更大。选择之一是使用更多的全连接层,但全连接层的成本很高;第二个选择是使用更多的卷积层,但缺乏好的指导思想来说明在哪加,加多少。最终VGG采取了将卷积层组合成块,再把卷积块组合到一起的思路。

VGG块可以看作是AlexNet思路的拓展,A

Read more

动手学习深度学习系列笔记——AlexNet


AlexNet

本节目录

1.1 2000 流行的机器学习方法——SVM,核方法

  • 核方法替代了之前的神经网络网络方法,SVM对于调参不敏感,现在也有一些应用
  • 本质上是特征提取,具体的方法是选择核函数来计算,把特征映射到高纬空间,使得他们线性可分
  • 经过核函数计算之后,原问题可以转化为凸优化

Read more

动手学习深度学习系列笔记——LeNet卷积神经网络


1.LeNet卷积神经网络

1.1 手写数字识别

  • LeNet网络最早是为了应用于手写数字的识别应用。
  • 应用背景:
    • 邮政局希望可以自动读出信件上的邮政编码
    • 人们希望可以用支票自动取钱
  • 该模型在80年代末的银行被真正的部署

1.2 MNIST

  • LeNet所使用的数据集
  • 50,000个训练数据
  • 10,000个测试数据
  • 图像大小为28*28
  • 10类

1.3 LeNet的具体模型

1.4 总结

  • LeNet是早期成功的神经网络
  • 先使用卷积层来学习图片空间信息
  • 然后使用全连接层来转换到类别空间

2.代码部分

2.1 定义网络结构和准备工作

  • 导入所需的库
#导入所需的库
import

Read more

动手学习深度学习系列笔记——池化层


池化层

本节将介绍池化(pooling)层,它具有目的:类似于数据增强,降低卷积层对位置的敏感性;一定程度减少计算。

最大池化层和平均池化层

与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。 相反,池运算符是确定性的,我们通常计算池化窗口中所有元素的最大值或平均值。这些操作分别称为最大池化层(maximum pooling)和平均池化层(average pooling)。

在这两种情况下,与互相关运算符一样,池化窗口从输入张量的左上角

Read more

动手学习深度学习系列笔记——多个输入和输出通道


21-多个输入和输出通道

本节目录:

1.多个输入通道:

  • 彩色图像可能有RGB三个通道

  • 转换为灰度会丢失信息

  • 每个通道都有一个卷积和,结果是所有通道卷积结果的和

  • 输入X:
  • W
  • 输出Y:

多个输入通道:

import torch
from d2l import torch as d2l

def corr2d_multi_in(X, K):
    return sum(d2l.corr2d(x, k

Read more