深度学习 – 为什么要初始化网络模型权重?
1 为什么要进行网络模型权值初始化? Pytorch中设计好网络结构,并搭建完成之后通常一个重要的步骤就是需要对网络模型中某些层的权值进行初始化,如下代码所示,我们搭建了一个三维卷积网络C3D,并使用私有成员函数__init_weight对网络中的nn.Conv3d和nn.BatchNorm3d模块…
- 深度学习
- 2022-08-26
Pytorch – RuntimeError: No rendezvous handler for env://错误
1 RuntimeError: No rendezvous handler for env:// 今天在Windows上使用torch.nn.parallel.DistributedDataParallel进行单机多卡分布式训练出现RuntimeError: No rendezvous handle…
- Pytorch
- 2022-08-25
深度学习 – 深度学习中的术语/专有名词归纳
1 Backbone、Head、Neck 以一个图像分类的卷积神经网络为例,网络分成两部分,前部分是由卷积层、归一化层、激活层、池化层堆叠的,输入图像在经过若干层卷积、归一化层、激活层和池化层的堆叠后进入全连接层,经过几次全连接后输出每个类别的概率值。 在这里,前面卷积层、归一化层、激活层和池化层的…
- 深度学习
- 2022-08-24
Pytorch – 没有使用with torch.no_grad()造成测试网络时显存爆炸的问题
1 显存爆炸的问题 最近使用以下示例代码测试自定义深度学习网络时耗光了所有显存,出现了梯度爆炸的问题。 model.eval() for batch_idx, data in enumerate(tqdm(data_loader)): image = data[0].to('cuda:0') ...…
- Pytorch
- 2022-08-23
深度学习 – 图像标准化与归一化方法
如果深度学习的源数据为图像数据时,首先需要对图像做数据预处理,最常用的图像预处理方法有两种,正常白化处理又叫图像标准化处理,另外一种方法为图像归一化处理,本文将对这两种预处理方法进行简要介绍。 1 图像标准化 图像标准化处理公式如下: \text{image} = \frac{image - \mu…
- 深度学习
- 2022-08-22
Pytorch – 多GPU训练方式nn.DataParallel与nn.parallel.DistributedDataParallel的区别
1 torch.nn.DataParallel和torch.nn.parallel.DistributedDataParallel函数详解 1.1 torch.nn.DataParallel 1. 官方文档 https://pytorch.org/docs/1.8.0/generated/torch…
- Pytorch
- 2022-08-16
深度学习 – 语音识别框架wenet的非流式与流式混合训练机制
1 wenet的非流式与流式混合训练机制 wenet实现了语音识别非流式与流式混合训练的机制。通过细读源码,其主要是通过动态修改网络的Encoder层(在wenet中主要使用了TransformerEncoder和Conformer)的attention mask来影响Encoder层中Self-A…
- 深度学习
- 2022-08-11
深度学习 – 语音识别框架wenet源码wenet/utils/mask.py中的mask机制
在阅读工业级语音识别框架wenet的源码的过程中,wenet/utils/mask.py中提供的各种mask函数非常重要,其实现了wenet论文Unified Streaming and Non-streaming Two-pass End-to-end Model for Speech Recog…
- 深度学习
- 2022-08-10
Pytorch – 模型微调时删除原有模型中的某一层的方法
本文以去除Pytorch预置的ResNet18网络中最后一层全连接分类层为例,说明模型微调时如何去除模型中某一层的方法。 我们想要在模型中去掉某一层实际上就等效于在该层不进行任何操作,直接将上一层的值直接返回即可,下面提供了3种方法进行选择。 1 使用自定义nn.Module替换指定层 在本方法中,…
- Pytorch
- 2022-08-08
Pytorch – 用Pytorch实现ResNet
1 引言 在深度学习中,通过简单的堆叠网络层增加网络深度的方式并不能增加网络的性能,另外,深度网络在训练时容易引起“梯度消失”的问题(即梯度反向传播到上层,重复的乘法可能会使梯度变得非常小)。 ResNet提出了残差学习来解决退化问题。对于一个堆积层结构(几层堆积而成)。对于一个堆积层结构(几层堆积…
- Pytorch
- 2022-08-06
Pytorch – masked_fill方法参数详解与使用
1 torch.Tensor.masked_fill参数详解与使用 1.1 torch.Tensor.masked_fill参数详解 1. 函数形式 torch.Tensor.masked_fill(mask, value) 2. 函数功能 输入的mask需要与当前的基础Tensor的形状一致。 将…
- Pytorch
- 2022-08-05
Pytorch – 手动调整学习率以及使用torch.optim.lr_scheduler调整学习率
1 Pytorch中学习率的调整方法 在Pytorch中调整训练过程中的学习率可以有两种方式: 一种是利用torch.optim.lr_scheduler提供的学习调整的方法 另一种是手动调整学习率,即调整优化器参数组中的lr参数 1.1 手动调整学习率 手动调整学习率的代码如下,我们在函数adju…
- Pytorch
- 2022-08-04