分类目录归档:动手学习深度学习系列

动手学习深度学习系列笔记——物体检测和数据集


- 41 物体检测和数据集

- 物体检测

- 边缘框实现

- 数据集

41 物体检测和数据集

物体检测

  1. 图片分类和目标检测在任务上的区别:图片分类已知有一个确定目标,任务是识别该目标属于何种分类,而目标检测不仅需要检测出图片中所有感兴趣的目标类别,并确定其位置,所以目标检测要比图片分类更复杂应用场景更广。
  2. 图片分类和目标检测在数据集上的区别:由于目标检测中每一张图片可能存在多个目标,每个目标我们不仅需要分类,还需要确定边缘框以给出目标位置信息,因此目标检测数据集的标注成本要显著高于图片分类,也就导致了目标检测数据集较小。
  3. 边缘框:用一个尽量小矩形框将目标物体大体框起来,边框的位置信息就可以表

Read more

动手学习深度学习系列笔记——实战Kaggle竞赛:CIFAR-10


CIFAR-10

1.目录

首先,导入竞赛所需要的包和模块:

import collections
import math
import os
import shutil
import pandas as pd
import torch
import torchvision
from torch import nn
from d2l import torch as d2l

2.1 下载数据集:

#@save
d

Read more

动手学习深度学习系列笔记——微调


微调

背景

  • 很多时候,例如我们想对家具进行分类,但是往往在努力收集数据得到的数据集也比较小假如我们想识别图片中不同类型的椅子,然后向用户推荐购买链接。 一种可能的方法是首先识别100把普通椅子,为每把椅子拍摄1000张不同角度的图像,然后在收集的图像数据集上训练一个分类模型。 尽管这个椅子数据集可能大于Fashion-MNIST数据集,但实例数量仍然不到ImageNet中的十分之一。 适合ImageNet的复杂模型可能会在这个椅子数据集上过拟合。 此外,由于训练样本数量有限,训练模型的准确性可能无法满足实际要求。为了避免这种情况,我们可以有两种方法:
    • 显然的想

Read more

动手学习深度学习系列笔记——数据增广


36 数据增广

目录

数据增广不仅用于处理图片,也可用于文本和语音,这里只涉及到图片。

1. 使用增强数据训练

采集数据得到的训练场景与实际部署场景不同是常见的问题,这种变化有时会显著影响模型表现。在训练集中尽可能模拟部署时可能遇到的场景对模型的泛化性十分重要。

数据增强是指在一个已有数据集上操作使其有更多的多样性。对语音来说可以加入不同的背景噪音,对图片而言可以改变其颜色,形状等。

一般来说不会先将数据集做增广后存下来再用于训练;而是直接在线生成,从原始数据中读图片

Read more

动手学习深度学习系列笔记——分布式训练


35-分布式训练

本节目录

1.分布式计算

  • 本质上来说和之前讲的单机多卡并行没有区别。二者之间的区别是分布式计算是通过网络把数据从一台机器搬到另一台机器

2. GPU机器架构

  • 总的来说,gpu到gpu的通讯是很快的,gpu到cpu慢一点。机器到机器更慢。因而总体性能的关键就是尽量在本地做通讯而少在机器之间做通讯
2.1 样例:计算一个小批量
  • 每个worker从参数服务器那里获取模

Read more

动手学习深度学习系列笔记——单机多卡并行


单机多卡并行

一台机器可以安装多个GPU(一般为1-16个),在训练和预测时可以将一个小批量计算切分到多个GPU上来达到加速目的,常用的切分方案有数据并行,模型并行,通道并行。

数据并行

将小批量的数据分为n块,每个GPU拿到完整的参数,对这一块的数据进行前向传播与反向传播,计算梯度。

数据并行通常性能比模型并行更好,因为对数据进行划分使得各个GPU的计算内容更加均匀。

数据并行的大致流程

主要分为五部

  • 1:每个GPU读取一个数据块(灰色部分)
  • 2:每个GPU读取当前模型的参数(橙色部分)
  • 3:每个GPU计算自己拿到数据块的梯度(绿色部分)
  • 4:GPU将计算得到的梯度传给内存(CPU)(绿

Read more

动手学习深度学习系列笔记——深度学习硬件


32-深度学习硬件

目录

1.DSP:数字信号处理

  • 为数字信号处理算法设计:点积、卷积、FFT

  • 低功耗,高性能

    • 比移动GPU快5倍,功耗更低
  • VLIW:very long instruction word
    • 频率低,核少,但是一条指令可以进行上百次的累加,便于重复
  • 缺点:编程和调试困难,编译器良莠不齐(做的人少,工具不是很好用)

2.可编程阵列(F

Read more

动手学习深度学习系列笔记——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