
深度学习经验总结
文章平均质量分 56
嘿,兄弟,好久不见
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
pytorch实现transformer添加位置信息构建分类模型
transformer模型现在已经广泛应用于NLP、CV等各种场景并且取得很好的效果,在此记录一下如何使用pytorch来构建Transformer模型进行分类,具体代码如下:import torchimport numpy as npimport torch.nn as nnfrom configs.config import optclass trans_model(nn.Module): def __init__(self, d_model,nhead,num_layers):原创 2022-05-01 15:18:33 · 947 阅读 · 0 评论 -
数据增强算法SMOTE的实验结果分析
有一份类别不平衡的数据集,正负类数据量分别为3W和50W,想要使用smote算法对正类数据进行增强看一下实际效果,具体实验结果如下:1、原始数据结果:2、正类数据增强1W条3、正类数据增加一倍即3W条4、正类数据增加5W条5、增加至正负类比例为1:1指标梳理如下:––––––––––...原创 2022-04-29 18:08:13 · 2325 阅读 · 0 评论 -
Pytorch model.eval()的作用
使用pytorch训练和预测时会分别使用到以下两行代码:model.train()model.eval()后来想了解model.eval()的具体作用,在网上查找资料大都是以下原因:模型中有BatchNormalization和Dropout,在预测时使用model.eval()后会将其关闭以免影响预测结果。没有看到BN和Dropout是具体如何影响预测结果的,直到看到这篇博客中的内容才有所理解,个人理解如下:1)训练过程中BN的变化。在训练过程中BN会不断的计算均值和方差,训练结束后得到最原创 2021-08-16 20:50:12 · 17259 阅读 · 0 评论 -
关于多标签分类任务的损失函数和评价指标的一点理解
关于多标签分类任务的损失函数和评价指标的一点理解之前有接触到多标签分类任务,但是主要关注点都放在模型结构中,最近关于多标签分类任务进行了一个讨论,发现其中有些细节不是太清楚,经过查阅资料逐渐理解,现在此记录。多标签分类任务损失函数在二分类、多分类任务中通常使用交叉熵损失函数,即Pytorch中的CrossEntorpy,但是在多标签分类任务中使用的是BCEWithLogitsLoss函数。BCEWithLogitsLoss与CrossEntorpy的不同之处在于计算样本所属类别概率值时使用的计算函数原创 2021-03-19 17:31:14 · 4253 阅读 · 3 评论 -
Pytorch实现seq2seq模型并站在小白的角度进行疑惑记录
之前只学习了seq2seq模型的原理,包括其中的注意力机制,大致原理是了解了,最近想动手实现模型结构,但是在动手落地的时候又遇到一些细节问题,现对疑惑问题的相关理解进行记录。Q1:seq2seq模型中包含编码器和解码器(RNN/LSTM),编码器的的会对输入句子进行编码得到语义向量,并作为解码器的输入,那么编码器的输出是如何作为解码器的输入呢,在哪里输入到解码器?A1:编码器编码得到的语义向量(即源句子的语义向量)是指编码器隐藏层向量,将编码向量输入到解码器是指使用编码器的隐藏层向量来初始化解码器隐藏层原创 2021-02-23 19:35:14 · 318 阅读 · 0 评论 -
简单记录fasttext进行文本分类代码
import fasttextdef train_model(input_path,output_path,dim=100,epoch=5,lr=0.1,loss='softmax'): model = fasttext.train_supervised(input_path,label='__label__',dim=dim,epoch=epoch,lr=lr,wordNgrams=2,loss=loss) model.save_model(output_path) return model#原创 2020-12-31 15:33:05 · 734 阅读 · 0 评论 -
python简单实现注意力机制
import numpy as npimport torch.nn as nnfrom sklearn.metrics.pairwise import cosine_similaritysoftmax = nn.Softmax()#设置查询向量和待查询向量q = np.array([[1,2,3]])#使用cosine_similarity函数必须为二维向量v = np.array([[1,2,3],[4,5,6]])#计算q和v中每个向量之间的attention得分,此处使用余弦相似度原创 2020-11-19 17:17:13 · 5204 阅读 · 3 评论 -
Pytorch实现模型蒸馏
简单记录一下使用Pytorch进行模型蒸馏的主要代码,,其余数据处理的内容可以另行补充import torchimport torch.nn as nnimport numpy as npfrom torch.nn import CrossEntropyLossfrom torch.utils.data import TensorDataset,DataLoader,SequentialSamplerclass model(nn.Module): def __init__(self,inp原创 2020-11-18 17:05:35 · 4580 阅读 · 9 评论 -
Pytorch实现模型剪枝
最近在看剪枝、蒸馏等模型压缩相关的资料,在此简单记录一下如何使用pytorch进行模型剪枝// An highlighted blockimport torchimport torch.nn as nnimport torch.nn.utils.prune as pruneclass model(nn.Module): def __init__(self.input_dim,hidden_dim,output_dim): super(model,self).__init__() sel原创 2020-11-17 14:54:05 · 2895 阅读 · 8 评论 -
记录训练神经网络过程中常用的权值共享和不同层赋予不同学习率等方法
权值共享import torchimport torch.nn as nnclass model(nn.Module): def __init__(self): super(model,self).__init__() self.lstm = nn.LSTM(input_size = 10,hidden_size = 5) self.linear = nn.Linear(in...原创 2020-04-05 18:56:32 · 1552 阅读 · 2 评论 -
记录pytorch常用的维度转换方法
对于pytorch常用的维度转换方法一直不熟悉,今天在网上查了资料,简单尝试之后汇总记录一下,方便以后查找import torch#**********生成数据**********#***生成固定数据***test1 = torch.tensor([[1,2,3],[4,5,6]])#***生成随机数据***test = torch.rand(2,4)#***生成符合高斯分布的随...原创 2020-04-02 20:28:11 · 1593 阅读 · 0 评论 -
Pytorch在Pycharm中无法自动提示函数
Pytorch在Pycharm中无法自动提示函数解决方案:1、Pycharm新建一个工程时会在C盘创建相应的文件夹,其文件夹名为一串数字,可通过在Pycham中ctrl + 鼠标左键点击某一Module(例如:numpy)进入该文件夹。该文件夹目录例如为:C:\user\XXX\Pycharm2019.1\system\python_stubs\19584256432、下载https://g...原创 2019-06-12 16:21:52 · 2121 阅读 · 0 评论 -
关于Pytorch中Dataset和Dataloader的理解
使用Pytorch自定义读取数据时步骤如下:1)创建Dataset对象2)将Dataset对象作为参数传递到Dataloader中详述步骤1)创建Dataset对象:需要编写继承Dataset的类,并且覆写__getitem__和__len__方法,代码如下class dataset(Dataset): def process(self): #对数据进行处理 pass d...原创 2019-06-23 17:05:48 · 7631 阅读 · 2 评论 -
Pytorch实现LSTM进行文本分类实例
import torchimport torch.nn as nnclass rnn(nn.Module): super(rnn).__init__() def __init__(self,input_dim,output_dim,num_layer,num_class): self.layer1 = nn.LSTM(input_dim,output_dim,num_layer) ...原创 2019-08-23 16:56:41 · 5243 阅读 · 4 评论 -
NER任务的一点疑惑
1.句子分类任务句子分类等任务是将整个句子输入到编码器获取句子编码,根据句子编码通过softmax函数获取该句子属于某一类别的概率,最大的概率值所对应的标签为该句子的类别2.NER任务与句子分类任务不同的是NER任务需要获取句子中每个词的标签,由于这一点的不同,最开始纠结于NER任务的输入数据到底是什么,是整个句子还是逐个字或者单词,但是LSTM等编码器会获取句子上下文信息,因此不可能逐个输...原创 2019-08-27 15:44:50 · 702 阅读 · 0 评论 -
小白对于BERT细节的一点理解
小白对于BERT细节的一点理解工作以后跟着同事学习NLP相关内容,之前的一些层归一化、归一化等相关知识还不牢固,希望在周末闲暇时间多多弥补,最近看了BERT的相关内容,在此对其进行记录整理,以便于日后复习回顾,记录有不正确的地方,还请指出。初相识最初在博客看过对于BERT的讲解,阅读原始论文,发现BERT主要包括以下三点内容:1、使用Transformer的进行双向训练。2、输入向量包括...原创 2019-11-10 11:31:36 · 4386 阅读 · 4 评论 -
深度学习易混淆小知识积累—特征选择/特征抽取/学习率衰减/梯度裁剪
特征选择一个样本会有多个特征,例如西瓜包括纹理、颜色、甜度等特征,特征选择的意义即在于原始特征集合中选择一个子集,使得模型效果最好,例如在西瓜的纹理、颜色、甜度、根蒂等原始特征中选择纹理和颜色两个特征子集,去除冗余信息。一句话总结:在原始特征集合中选取特征子集。特征抽取特征抽取是将原始特征空间映射到新的特征空间,例如从三维空间映射到二维空间,其目的在于使用较少的特征来表示原始特征空间中的绝大...原创 2020-01-07 10:14:46 · 645 阅读 · 0 评论 -
导数和梯度
突然出现的疑惑阅读神经网络通过梯度下降算法进行反向传播优化参数的相关资料时,突然想到权重更新首先是通过输出函数对权重求偏导,之后在原有权重值得情况下进行更新(减去或者加上偏导值),那难道求到的偏导就是梯度嘛,这样岂不是梯度和偏导是同样的含义,梯度和偏导之间又有什么关系呢?查找资料解惑最初在网上学习梯度下降时,基本上都会看到资料以“下山”为例来讲解梯度,下山方向最快的方向就是梯度方向,最开始只...原创 2020-01-09 15:52:30 · 504 阅读 · 0 评论 -
样本不均衡分类问题
样本不均衡导致分类结果较差的本质原因样本不均衡包括样本类别不均衡和样本难易程度不均衡,样本不均衡导致的分类效果较差本质上是样本难易程度不均衡导致的[^1]。对本质原因的个人理解个人理解,如果一个样本集中的所有样本都能够被一个模型非常容易的进行分类,即使样本不同类别的数量差距较大,模型也能够达到比较好的分类效果。1、人眼(可以看做一个模型)去区分鲸鱼和狗两种动物,由于两个类别的样本差别较大,...原创 2020-02-24 21:19:05 · 1071 阅读 · 0 评论 -
流水账式对Transformer encoder计算流程的梳理
流水账式对Transformer encoder计算流程的梳理之前看过一些关于Transformer的讲解资料,对self-attention讲解的非常清楚,学习到了self-attention内部的计算过程,但是自己对编码器整体部分的self-attention还有multi head等总是存在一点模糊,没有特别清晰的认知,今天第二次看BERT源码,对编码器的整体部分有了更加深入清晰一点的认...原创 2020-03-27 14:35:26 · 466 阅读 · 0 评论