- 博客(104)
- 资源 (16)
- 收藏
- 关注
原创 pytorch model.train() 和model.eval() 对 BN 层的影响
代码】pytorch model.train() 和model.eval() 对 BN 层的影响。
2022-08-17 23:12:51
769
原创 Batch Normalization、Layer Normalization、Group Normalization、Instance Normalization原理、适用场景和实际使用经验
Batch Normalization、Layer Normalization、Group Normalization、Instance Normalization原理、适用场景和使用经验
2022-06-08 21:57:20
1834
1
原创 使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作
使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作总共分为四步构造一个my_dataset类,继承自torch.utils.data.Dataset重写__getitem__ 和__len__ 类函数建立两个函数find_classes、has_file_allowed_extension,直接从这copy过去建立my_make_dataset函数用来构造(path,lable)对一、构造一个my_dataset类,继承自torch.utils.data.Data
2022-03-13 23:01:34
4204
原创 pytorch单机多卡的正确打开方式 以及可能会遇到的问题和相应的解决方法
pytorch 单机多卡的正确打开方式pytorch 使用单机多卡,大体上有两种方式简单方便的 torch.nn.DataParallel(很 low,但是真的很简单很友好)使用 torch.distributed 加速并行训练(推荐,但是不友好)首先讲一下这两种方式分别的优缺点nn.DataParallel优点:就是简单缺点就是:所有的数据要先load到主GPU上,然后再分发给每个GPU去train,注意这时候主GPU的显存占用很大,你想提升batch_size,那你的主GPU就会限制
2022-03-11 23:45:43
13901
12
原创 Acquiring lock on /*/*/.vscode-server/bin/f80445acd5a3dadef24aa20916 vscode远程linux 服务器无法建立连接
1 删除 C:\Users\用户名.ssh 下的 know_hosts文件2 使用其他的ssh工具(MobaXterm)远程连接目标服务器首先使用指令:ps -aux |grep ‘自己的用户名’ 列出自己所有的运行的程序找到正在使用报错的文件/*/*/.vscode-server/bin/f80445acd5a3dadef24aa20916的进程使用kill ‘进程id’指令杀掉改进程然后使用 rm -rf /*/*/.vscode-server/bin/f80445acd5a3dadef24
2022-02-16 22:22:29
2596
4
原创 python 实现 CRC 冗余码的方法
python 实现 CRC 冗余码的方法我这里考虑输入是 torch.Tensor的一个 只包含0 ,1 元素的张量对于输入是numpy或者0,1字符串的方法就更简单了,总之都先要将输入处理成为 0,1字符串,例如“1010”首先构造一个输入:import randoma = [1 for i in range(16)]b = [0 for i in range(16)]a.extend(b)random.shuffle(a)a = np.array(a)a = torch.Ten
2021-12-06 22:42:10
2064
原创 python 实现 BCH 纠错码的方法
python 实现 BCH 纠错码的方法BCH码是一类重要的纠错码,它把信源待发的信息序列按固定的κ位一组划分成消息组,再将每一消息组独立变换成长为n(n>κ)的二进制数字组,称为码字。如果消息组的数目为M(显然M>=2),由此所获得的M个码字的全体便称为码长为n、信息数目为M的分组码,记为n,M。把消息组变换成码字的过程称为编码,其逆过程称为译码。我这里考虑输入是 torch.Tensor的一个 只包含0 ,1 元素的张量对于输入是numpy或者0,1字符串的方法就更简单了,总之都先要
2021-12-06 17:30:21
6977
8
原创 pytorch 使用DataParallel 单机多卡和单卡保存和加载模型时遇到的问题
首先很多网上的博客,讲的都不对,自己跟着他们踩了很多坑1.单卡训练,单卡加载这里我为了把三个模块save到同一个文件里,我选择对所有的模型先封装成一个checkpoint字典,然后保存到同一个文件里,这样就可以在加载时只需要加载一个参数文件。保存:states = { 'state_dict_encoder': encoder.state_dict(), 'state_dict_decoder': decoder.state_dict(), }torch.s
2021-11-12 22:15:59
4097
原创 腾讯会议如何使用讲演者模式进行汇报(nian gao)
腾讯会议如何使用讲演者模式进行汇报(nian gao)首先列出步骤,再一一演示:alt+f5 开启讲演者模式,调整讲演者模式的窗口为小窗alt+tab 切换回腾讯会议界面,屏幕共享power point窗口(注意不是“桌面1”)alt+tab 切换回讲演者模式小窗,开始讲演播放结束,共享屏幕结束重新共享屏幕,共享“桌面1”下面开始演示:1. alt+f5 开启讲演者模式,调整讲演者模式的窗口为小窗2. alt+tab 切换回腾讯会议界面,屏幕共享power point窗口(注意不是
2021-10-12 09:56:20
7302
原创 (python numpy) np.array.shape 中 (3,)、(3,1)、(1,3)的区别
(python numpy) np.array.shape 中 (3,)、(3,1)、(1,3)的区别被人问到这个问题,就记录一下吧1. (3,)(3,)是[x,y,z][x,y,z][x,y,z]的形式,即为一维数组,访问数组元素用一个indexfor example:>>> array1 = np.array([1,2,3])>>> array1.shape(3,)2. (3,1)(3,1)是[[x],[y],[z]][[x],[y],[z]][[
2021-08-24 11:24:49
6944
4
原创 ViT(Vision Transformer)学习
ViT(Vison Transformer)学习Paper:An image is worth 16×16 words: transformers for image recognition at scale. In ICLR, 2021.Transformer 在 NLP领域大放异彩,并且随着模型和数据集的不断增长,仍然没有表现出饱和的迹象。这使得使用更大规模的数据对Transformer结构进行训练得到表现更优的模型成为了一种解决问题的方案。受 NLP 中 Transformer 成功的启发,作者尝
2021-07-01 15:45:11
1416
原创 character-level OCR之Character Region Awareness for Text Detection(CRAFT) 论文阅读
Character Region Awareness for Text Detection 论文阅读论文地址(arXiv) ,pytorch版本代码地址最近在看一些OCR的问题,CRAFT是在场景OCR中效果比较好的模型,记录一下论文的阅读已有的文本检测工作大致如下:基于回归的文本检测(Regression-based text detectors):TextBoxes、DMPNet .etc,运用通用目标检测方法到文本检测中。基于分割的文本检测(Segmentation-based text
2021-06-29 15:14:00
643
原创 pytorch中的squeeze和unsqueeze
pytorch中的squeeze和unsqueezeunsqueeze即在参数指定的维度位置,增加一个维度(就是在第几个“[”的位置增加一个“[”)import torcha = torch.arange(0,8)print(a)b = a.view(2,4)print(b)b = b.unsqueeze(1)print(b)tensor([0, 1, 2, 3, 4, 5, 6, 7])tensor([[0, 1, 2, 3], [4, 5, 6, 7]])ten
2021-03-15 08:52:24
535
原创 pytorch-多GPU训练(单机多卡、多机多卡)
pytorch-多GPU训练(单机多卡、多机多卡)pytorch 单机多卡训练首先是数据集的分布处理需要用到的包:torch.utils.data.distributed.DistributedSamplertorch.utils.data.DataLoadertorch.utils.data.DatasetDistributedSampler这个包我们用来确保dataloader只会load到整个数据集的一个特定子集,为每一个子进程划分出一部分数据集,以避免不同进程之间数据重复。而我们构造
2021-03-13 09:58:35
2166
原创 sklearn .feature_extraction.text.TfidVectorizer.fit_transform(text)
sklearn .feature_extraction.text.TfidVectorizer.fit_transform(text)def normal_test(): from sklearn.feature_extraction.text import TfidfVectorizer corpus = [ 'This is the first document.', 'This document is the second document.', ]
2021-02-04 16:18:32
533
1
原创 python读取json格式的超参数
python读取json格式的超参数json文件:{ "full_finetuning": true, "max_len": 180, "learning_rate": 3e-5, "weight_decay": 0.01, "clip_grad": 2, "batch_size": 30, "epoch_num": 20, "min_epoch_num": 5, "patience": 0.02, "patience_
2021-01-27 08:27:30
848
原创 pytorch加载数据集-DataLoader解析以及一个通用的数据集加载模板
DataLoaderclass torch.utils.data.DataLoader( \ dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, \num_workers=0, collate_fn=None, pin_memory=False, drop_last=False, timeout=0,\worker_init_fn=None, multiprocessing_context=None, gen
2021-01-21 10:36:00
1861
1
原创 pytorch squeeze and unsqueeze
torch.squeeze(input, dim=None, *, out=None) → Tensorsqueezex = torch.zeros(2, 1, 2, 1, 2)x.size()#torch.Size([2, 1, 2, 1, 2])y = torch.squeeze(x)y.size()#torch.Size([2, 2, 2])y = torch.squeeze(x, 0)y.size()#torch.Size([2, 1, 2, 1, 2])y = torch.
2021-01-20 11:24:56
255
原创 np.triu
np.triunumpy.triu(m, k=0)Upper triangle of an array.Return a copy of a matrix with the elements below the k-th diagonal zeroed.返回一个矩阵的上三角矩阵,第k条对角线以下的元素归零例如:import numpy as npnp.triu(np.ones([4,4]), k=1).astype('uint8')output:array([[0, 1, 1, 1],
2021-01-20 08:55:48
692
原创 torchtext.data.Field
torchtext.data.Field类接口class torchtext.data.Field(sequential=True, use_vocab=True, init_token=None, eos_token=None, fix_length=None, dtype=torch.int64, preprocessing=None, postprocessing=None, lower=False, tokenize=None, tokenizer_language='en', include_
2021-01-19 11:28:11
2919
2
原创 python中的[-1]、[:-1]、[::-1]、[n::-1]
import numpy as npa=np.random.rand(4)print(a)[0.48720333 0.67178384 0.65662903 0.40513918] print(a[-1]) #取最后一个元素0.4051391774882336 print(a[:-1]) #去除最后一个元素[0.48720333 0.67178384 0.65662903] print(a[::-1]) #逆序[0.40513918 0.65662903 0.67178384 0
2021-01-19 11:15:09
351
原创 pytorch-LSTM的输入和输出尺寸
LSTM的输入和输出尺寸CLASS torch.nn.LSTM(*args, **kwargs)Applies a multi-layer long short-term memory (LSTM) RNN to an input sequence.For each element in the input sequence, each layer computes the following function:对于一个输入序列实现多层长短期记忆的RNN网络,对于输入序列中的每一个元素,LSTM的
2021-01-19 10:21:20
6320
1
原创 pytorch-word2vec的实例实现
word2vec的实例实现实现词嵌入word2vec中的跳字模型和近似训练中的负采样以及二次采样(subsampling),在语料库上训练词嵌入模型的实现。首先导入实验所需的包或模块。import collectionsimport mathimport randomimport sysimport timeimport osimport numpy as npimport torchfrom torch import nnimport torch.utils.data as Dat
2021-01-17 15:26:51
1428
1
原创 深度学习-自然语言处理中的近似训练
自然语言处理中的近似训练跳字模型的核心在于使用softmax运算得到给定中心词wcw_cwc来生成背景词wow_owo的条件概率P(wo∣wc)=exp(uo⊤vc)∑i∈Vexp(ui⊤vc).P(w_o \mid w_c) = \frac{\text{exp}(\boldsymbol{u}_o^\top \boldsymbol{v}_c)}{ \sum_{i \in \mathcal{V}} \text{exp}(\boldsymbol{u}_i^\top \boldsymbol{v}_c)}.
2021-01-15 15:31:24
530
1
原创 深度学习-词嵌入(word2vec)
词嵌入(word2vec)自然语言是一套用来表达含义的复杂系统。在这套系统中,词是表义的基本单元。顾名思义,词向量是用来表示词的向量,也可被认为是词的特征向量或表征。把词映射为实数域向量的技术也叫词嵌入(word embedding)。近年来,词嵌入已逐渐成为自然语言处理的基础知识。跳字模型跳字模型假设基于某个词来生成它在文本序列周围的词。举个例子:假设文本序列是“the”“man”“loves”“his”“son”以“loves”作为中心词,设背景窗口大小为2如下图所示,跳字模型所关心的是
2021-01-15 14:43:17
439
1
原创 pytorch深度学习-机器视觉-目标检测和边界框简介
机器视觉之目标检测和边界框简介在图像分类任务里,我们假设图像里只有一个主体目标,并关注如何识别该目标的类别。然而,很多时候图像里有多个我们感兴趣的目标,我们不仅想知道它们的类别,还想得到它们在图像中的具体位置。在计算机视觉里,我们将这类任务称为目标检测(object detection)或物体检测。目标检测在多个领域中被广泛使用。例如,在无人驾驶里,我们需要通过识别拍摄到的视频图像里的车辆、行人、道路和障碍的位置来规划行进线路。机器人也常通过该任务来检测感兴趣的目标。安防领域则需要检测异常目标,如歹徒或
2021-01-15 09:01:52
1606
1
原创 pytorch深度学习-微调(fine tuning)
微调(fine tuning)首先举一个例子,假设我们想从图像中识别出不同种类的椅子,然后将购买链接推荐给用户。一种可能的方法是先找出100种常见的椅子,为每种椅子拍摄1,000张不同角度的图像,然后在收集到的图像数据集上训练一个分类模型。这个椅子数据集虽然可能比Fashion-MNIST数据集要庞大,但样本数仍然不及ImageNet数据集中样本数的十分之一。这可能会导致适用于ImageNet数据集的复杂模型在这个椅子数据集上过拟合。同时,因为数据量有限,最终训练得到的模型的精度也可能达不到实用的要求。
2021-01-14 20:06:38
1787
3
原创 深度学习-计算机视觉--图像增广
图像增广大规模数据集是成功应用深度神经网络的前提。图像增广(image augmentation)技术通过对训练图像做一系列随机改变,来产生相似但又不同的训练样本,从而扩大训练数据集的规模。图像增广的另一种解释是,随机改变训练样本可以降低模型对某些属性的依赖,从而提高模型的泛化能力。例如,我们可以对图像进行不同方式的裁剪,使感兴趣的物体出现在不同位置,从而减轻模型对物体出现位置的依赖性。我们也可以调整亮度、色彩等因素来降低模型对色彩的敏感度。可以说,在当年AlexNet的成功中,图像增广技术功不可没。
2021-01-11 16:15:42
1005
1
原创 pytorch多GPU计算
pytorch多GPU计算如果正确安装了NVIDIA驱动,我们可以通过在命令行输入nvidia-smi命令来查看当前计算机上的全部GPU定义一个模型:import torchnet = torch.nn.Linear(10, 1).cuda()netoutput:Linear(in_features=10, out_features=1, bias=True)要想使用PyTorch进行多GPU计算,最简单的方法是直接用torch.nn.DataParallel将模型wrap一下即可:n
2021-01-02 17:49:48
1051
1
原创 深度学习-自动并行计算
自动并行计算异步计算默认情况下,PyTorch中的 GPU 操作是异步的。当调用一个使用 GPU 的函数时,这些操作会在特定的设备上排队但不一定会在稍后立即执行。这就使我们可以并行更多的计算,包括 CPU 或其他 GPU 上的操作。一般情况下,异步计算的效果对调用者是不可见的,因为每个设备按照它们排队的顺序执行操作在 CPU 和 GPU 之间或两个 GPU 之间复制数据时,PyTorch会自动执行必要的同步操作。因此,计算将按每个操作同步执行的方式进行。 可以通过设置环境变量CUDA_LAU
2021-01-02 17:15:34
1120
1
原创 pytorch命令式和符号式混合编程
命令式和符号式编程命令式编程命令式编程使用编程语句改变程序状态,如下:def add(a, b): return a + bdef fancy_func(a, b, c, d): e = add(a, b) f = add(c, d) g = add(e, f) return gfancy_func(1, 2, 3, 4) # 10在运行语句e = add(a, b)时,Python会做加法运算并将结果存储在变量e中,从而令程序的状态发生改变。类似地
2021-01-02 17:05:58
555
1
原创 深度学习优化算法-Adam算法
Adam算法Adam算法在RMSProp算法基础上对小批量随机梯度也做了指数加权移动平均。Adam算法可以看做是RMSProp算法与动量法的结合。算法内容Adam算法使用了动量变量vt\boldsymbol{v}_tvt和RMSProp算法中小批量随机梯度按元素平方的指数加权移动平均变量st\boldsymbol{s}_tst,并在时间步0将它们中每个元素初始化为0。给定超参数0≤β1<10 \leq \beta_1 < 10≤β1<1(算法作者建议设为0.9)时间步t
2021-01-02 11:28:26
2521
原创 深度学习优化算法-AdaDelta算法
AdaDelta算法除了RMSProp算法以外,另一个常用优化算法AdaDelta算法也针对AdaGrad算法在迭代后期可能较难找到有用解的问题做了改进 [1]。不一样的是,AdaDelta算法没有学习率这个超参数。 它通过使用有关自变量更新量平方的指数加权移动平均的项来替代RMSProp算法中的学习率。AdaDelta算法也像RMSProp算法一样,使用了小批量随机梯度gt\boldsymbol{g}_tgt按元素平方的指数加权移动平均变量st\boldsymbol{s}_tst。在时间步0
2021-01-02 11:17:30
5110
2
原创 深度学习-参数与超参数
参数(parameters)/模型参数由模型通过学习得到的变量比如权重、偏置超参数(hyperparameters)/算法参数根据经验进行设定,影响到权重和偏置的大小比如迭代次数、隐藏层的层数、每层神经元的个数、学习速率等...
2021-01-02 11:02:45
352
原创 深度学习优化算法:RMSProp算法
RMSProp算法在AdaGrad算法中,因为调整学习率时分母上的变量st\boldsymbol{s}_tst一直在累加按元素平方的小批量随机梯度,所以目标函数自变量每个元素的学习率在迭代过程中一直在降低(或不变)。因此,当学习率在迭代早期降得较快且当前解依然不佳时,AdaGrad算法在迭代后期由于学习率过小,可能较难找到一个有用的解。为了解决这一问题,RMSProp算法对AdaGrad算法做了一点小小的修改。算法内容之前说过指数加权移动平均。不同于AdaGrad算法里状态变量st\boldsymb
2021-01-02 10:58:10
9740
原创 深度学习AdaGrad算法
AdaGrad算法在一般的优化算法中,目标函数自变量的每一个元素在相同时间步都使用同一个学习率来自我迭代。例如,假设目标函数为fff,自变量为一个二维向量[x1,x2]⊤[x_1, x_2]^\top[x1,x2]⊤,该向量中每一个元素在迭代时都使用相同的学习率。例如,在学习率为η\etaη的梯度下降中,元素x1x_1x1和x2x_2x2都使用相同的学习率η\etaη来自我迭代:x1←x1−η∂f∂x1,x2←x2−η∂f∂x2. x_1 \leftarrow x_1 - \eta \fra
2021-01-02 10:45:24
4627
2
原创 动量法解决梯度下降的一些问题
动量法目标函数有关自变量的梯度代表了目标函数在自变量当前位置下降最快的方向,因此,梯度下降也叫作最陡下降(steepest descent)。在每次迭代中,梯度下降根据自变量当前位置,沿着当前位置的梯度更新自变量。然而,如果自变量的迭代方向仅仅取决于自变量当前位置,这可能会带来一些问题。梯度下降的问题考虑一个目标函数:输入为二维向量x=[x1,x2]⊤\boldsymbol{x} = [x_1, x_2]^\topx=[x1,x2]⊤输出为标量f(x)=0.1x12+2x22f(\bold
2020-12-25 22:24:19
788
1
原创 小批量随机梯度下降
小批量随机梯度下降在每一次迭代中,梯度下降使用整个训练数据集来计算梯度,因此它有时也被称为批量梯度下降(batch gradient descent)。随机梯度下降在每次迭代中只随机采样一个样本来计算梯度。可以在每轮迭代中随机均匀采样多个样本来组成一个小批量,然后使用这个小批量来计算梯度。下面就来描述小批量随机梯度下降设目标函数f(x):Rd→Rf(\boldsymbol{x}): \mathbb{R}^d \rightarrow \mathbb{R}f(x):Rd→R。在迭代开始前的时间
2020-12-25 17:05:04
8048
合肥工业大学 编译原理实验 LR(1)分析法
2020-08-27
合肥工业大学 编译原理实验 LL(1)分析法
2020-08-27
合肥工业大学 编译原理实验 词法分析器设计实现
2020-08-27
《系统硬件综合设计》报告,cpu课设
2020-08-27
合肥工业大学系统硬件综合设计,计算机组成原理CPU课设,多周期,modelsim
2020-08-27
基于语音的文件系统搜索工具
2020-08-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人