![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模型模块学习
咖乐布小部
NLP算法工程师,欢迎交流,一起学习!
展开
-
tf.variable_scope、tf.get_variable()
tf.variable_scope、tf.get_variable()转载 2022-07-11 11:29:18 · 317 阅读 · 0 评论 -
h5py合并文件
with h5py.File('table_copy.h5',mode='w') as h5fw: for h5name in glob.glob('file*.h5'): h5fr = h5py.File(h5name,'r') for obj in h5fr.keys(): h5fr.copy(obj, h5fw)原创 2021-11-25 16:45:21 · 1242 阅读 · 2 评论 -
argparser action
import argparseparser = argparse.ArgumentParser()parser.add_argument('-a', action='store_true', help='Store a simple value')parser.add_argument('-b', action='store_false', help='Store a constant value')args = parser.parse_args()print(args)>>>原创 2021-11-01 16:38:58 · 242 阅读 · 0 评论 -
resnet152
152是指152次卷积其中block共有3+8+36+3 = 50个每个block是由3层卷积构成的bottle_net block.共150个卷积开头一个卷积将3通道的图片提取特征。后面一个nn.AdaptiveAvgPool2d((1,1)), 就是自适应平均池化,输出维度为1.因为本来上面的各层卷积后输出的还是一个二维矩阵。图中的64,128等都是通道数,也就是二维矩阵的个数。最后要通过自适应池化将卷积最后的矩阵转换称一个1维的数。然后才能用线性层进行维度映射。进行分类。..原创 2021-05-13 11:07:50 · 2623 阅读 · 0 评论 -
Negative sampling 负采样
1.负采样的目的:减少参数的计算量:每次让一个训练样本仅仅更新一小部分的权重目标词:正样本 其他词:全都是负样本比如中间维度是300,输出的词典维度是10000。也就是有9999个负样本。如果按正常采样更新参数,那么在此需要更新一个300*10000的参数矩阵。而目标词之和前后若干词相关,离的太远的词对其影响不大,所以如果对每个目标词训练的时候,只更新她相邻的若干词的参数矩阵,那么计算量就将极大地减小对于大数据集,负采样只取2-5个词。对于小数据集,负采样去5-20个词2.取词依..原创 2021-02-19 23:09:35 · 805 阅读 · 0 评论 -
transformer的Encoder和decoder的输入
1.Encoder的输入:enc_inputs其一:用来生成Encoder自注意的mask,其二:在多头自注意中计算Q、K、V矩阵2.decoder的输入:dec_inputs,enc_inputs,enc_outputsdec_inputs:其一,用来生成decoder自注意的mask矩阵。其二,计算decoder的多头自注意层的Q、K、V矩阵。enc_inputs:用来生成decoder中编码-解码层的mask矩阵,避免受Encoder输入中padding的影响。enc_output原创 2021-02-18 17:29:17 · 5939 阅读 · 0 评论 -
OSError: [WinError 1455] 页面文件太小,无法完成操作.
计算机虚拟内存不够。解决方法:https://zhidao.baidu.com/question/63149146.html原创 2021-02-18 13:48:28 · 3827 阅读 · 4 评论 -
Transformer 中的mask
transformer中的mask有两种作用:其一:去除掉各种padding在训练过程中的影响。 其二,将输入进行遮盖,避免decoder看到后面要预测的东西。1.Encoder中的mask 的作用属于第一种在encoder中,输入的是一batch的句子,为了进行batch训练,句子结尾进行了padding(P)。在输入encoder中训练的过程中,先进性多头自注意计算。在这个过程中 1)进行(q*K^T)/d_model^1/2. 2)然后要对得到的权重矩阵进行mask 3...原创 2021-02-18 09:43:54 · 14435 阅读 · 12 评论 -
pack_padded_sequence() 和 pad_packed_sequence()
torch.nn.utils.rnn.pack_padded_sequence()以及torch.nn.utils.rnn.pad_packed_sequence()作用:再用LSTM对句子进行表示时,避免padding对句子表示的影响。一、为什么RNN需要处理变长输入假设我们有情感分析的例子,对每句话进行一个感情级别的分类,主体流程大概是下图所示:思路比较简单,但是当我们进行batch个训练数据一起计算的时候,我们会遇到多个训练样例长度不同的情况,这样我们就会很自然的进..转载 2021-02-08 16:51:34 · 341 阅读 · 0 评论 -
torch.cat() 和 torch.stack()
torch.cat() 和 torch.stack()一句话总结,cat是将tensor拼接到同一层上,stack是将tensor层叠在一起。torch.cat()torch.cat(tensors,dim=0,out=None)→ Tensortorch.cat()对tensors沿指定维度拼接,但返回的Tensor的维数不会变>>> import torch>>> a = torch.rand((2, 3))>>> ...原创 2020-12-22 21:23:20 · 253 阅读 · 0 评论 -
argparse 命令行解析器用法;
文件名:pract.py1.代码:import argparseparser = argparse.ArgumentParser(description = ' ') #实例化parser.add_argument('--model',defult = 'TextRNN', type = str , required=True , help=' choose a model from TextRNN,TextCNN') #添加参数,最前面的事参数名字。注意require...原创 2020-12-10 08:52:28 · 473 阅读 · 0 评论 -
这篇transformer,我愿称之为最强!
阅读目录1 模型的思想 2 模型的架构 3 Embedding 3.1 Word Embedding 3.2 Positional Embedding 4 Encoder 4.1 Muti-Head-Attention 4.1.1 Self-Attention 4.1.2 Add & Norm 4.2 Feed-Forward Network 5 Decoder 5.1 Mask-Multi-Head-Attention 5.2Encoder-Decoder...转载 2020-12-07 16:22:08 · 3234 阅读 · 0 评论 -
transformer 模型的decoder部分 带gif动图
Decoder 也是N层堆叠的结构。被分为3个 SubLayer,可以看出 Encoder 与 Decoder 三大主要的不同:Diff_1:Decoder SubLayer-1 使用的是 “masked” Multi-Headed Attention 机制,防止为了模型看到要预测的数据,防止泄露。 Diff_2:SubLayer-2 是一个 encoder-decoder multi-head attention。 Diff_3:LinearLayer 和 SoftmaxLayer 作用于 Sub原创 2020-12-07 11:30:17 · 2468 阅读 · 0 评论 -
python项目学习过程中的小知识点总结
小知识tensor.permute()torch.matmul(mat1,mat2)copy()和deepcopy()tensor.view( , -1):tensor.permute(dims) :维度改变函数。改变tensor维度。比如 a是:tensor.size([3,4,6]) ,则a.permute(0,2,1)的size就是tensor.size([3,6,4]) 即交换了第1,2维度。https://zhuanlan.zhihu.com/p/765831...原创 2020-12-04 16:26:29 · 661 阅读 · 0 评论 -
Encoder-Decoder、Seq2Seq、 以及Transformer之间的关系
结论写在前面:Encoder-Decoder 是一种架构,范围非常广泛,只要是用一个编码结构一个解码结构的模型都是Encoder-Decoder 架构seq2seq 和 Encoder-Decoder基本相同,只不过后者是一种抽象概念,前者是具体的模型,seq2seq可以看做是一种结构,有很多这种结构的模型。seq2seq有多种类型,N VS N,N vs 1, 1vs N, N vs M。最后一种应用最广。同时还有基于RNN的seq2seq,基于CNN的seq2seq,基于LSTM的seq2seq转载 2020-12-02 10:36:50 · 4892 阅读 · 0 评论 -
Accelerating Deep Learning Research with the Tensor2Tensor Library
Accelerating Deep Learning Research with the Tensor2Tensor LibraryMonday, June 19, 2017Posted by Łukasz Kaiser, Senior Research Scientist, Google Brain TeamDeep Learning (DL) has enabled the rapid advancement of many useful technologies, such asmachi.转载 2020-12-01 22:06:26 · 131 阅读 · 0 评论 -
Transformer: A Novel Neural Network Architecture for Language Understanding
Transformer: A Novel Neural Network Architecture for Language UnderstandingThursday, August 31, 2017Posted by Jakob Uszkoreit, Software Engineer, Natural Language UnderstandingNeural networks, in particularrecurrent neural networks(RNNs), are now at..转载 2020-12-01 22:05:50 · 657 阅读 · 0 评论 -
Transformer 模型
转载:BERT大火却不懂Transformer?读这一篇就够了大数据文摘与百度NLP联合出品编译:张驰、毅航、Conrad、龙心尘编者按:前一段时间谷歌推出的BERT模型在11项NLP任务中夺得STOA结果,引爆了整个NLP界。而BERT取得成功的一个关键因素是Transformer的强大作用。谷歌的Transformer模型最早是用于机器翻译任务,当时达到了STOA效果。Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Tr.转载 2020-12-01 21:13:20 · 837 阅读 · 0 评论 -
残差连接 (及 梯度消失 网络退化)详解
本文就说说用残差连接解决梯度消失和网络退化的问题。一、背景1)梯度消失问题我们发现很深的网络层,由于参数初始化一般更靠近0,这样在训练的过程中更新浅层网络的参数时,很容易随着网络的深入而导致梯度消失,浅层的参数无法更新。可以看到,假设现在需要更新b1,w2,w3,w4参数因为随机初始化偏向于0,通过链式求导我们会发现,w1w2w3相乘会得到更加接近于0的数,那么所求的这个b1的梯度就接近于0,也就产生了梯度消失的现象。2)网络退化问题举个例子,假设已经有了一个最优化的网络结构,是转载 2020-12-01 20:22:26 · 9057 阅读 · 7 评论 -
循环神经网络RNN和LSTM模型概述
一、RNN模型结构如图1)x(t)代表在序列索引号tt时训练样本的输入。同样的,x(t−1)和x(t+1)代表在序列索引号t−1和t+1时训练样本的输入。2)h(t)代表在序列索引号tt时模型的隐藏状态。h(t)由x(t)和h(t−1)共同决定。3)o(t)代表在序列索引号tt时模型的输出。o(t)只由模型当前的隐藏状态h(t)决定。4)L(t)代表在序列索引号tt时模型的损失函数。 注意指向L的方向,L是损失函数,所以两边都是指向L的5)y(t)代表在序列索引号tt时训练样本序列的原创 2020-11-28 10:52:04 · 1165 阅读 · 0 评论 -
for result in zip(*results): ensemble_tag = Counter(result).most_common(1)[0][0]
1.先来说说counter()函数2.再来说说整句话是什么意思。一、Counter函数,顾名思义就是计算函数,参数可以是list,也可以是dict比较灵活*计算字符串中字母个数>>> c = Counter('abcdeabcdabcaba') # count elements from a string>>> c.most_common(3) # 输出数量最多的前三个[('a', 5), ('b', 4), ('.原创 2020-11-27 16:22:04 · 1159 阅读 · 0 评论 -
pairs = list(zip(word_lists, tag_lists)) 与 word_lists, tag_lists = list(zip(*pairs))
zip(lista,listb)就是将两个列表拼在一起,依次拿出两个列表的元素组成一个新的tuple元素。并且与短的元素长度一致>>>a = [1,2,3]>>> b = [4,5,6]>>> c = [4,5,6,7,8]>>> zipped = zip(a,b) # 打包为元组的列表[(1, 4), (2, 5), (3, 6)]>>> zip(a,c) # 元素个原创 2020-11-21 10:22:03 · 374 阅读 · 0 评论 -
set(stopwords.words(‘english‘))
转载于:https://blog.csdn.net/miaoxiaowuseng/article/details/107343427python处理停用词stopwords停用词是什么 从一段文本中删除停用词 停用词是什么将数据转换为计算机可以理解的内容的过程称为预处理。预处理的主要形式之一是过滤掉无用的数据。在自然语言处理中,无用的单词(数据)称为停用词。停用词是指搜索引擎已编程忽略的常用词(例如“the”,“a”,“an”,“in”)。我们不希望这些单词占...转载 2020-11-14 17:16:30 · 4744 阅读 · 0 评论 -
Python安装selenium模块
用pip安装selenium模块时,出现了一下看不懂的问题:解决方法:复制:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium --user直接下载即可:此方法来自:风变编程 的蓬蓬助教原创 2020-08-22 19:33:18 · 374 阅读 · 0 评论 -
已解决:Python OSError: [WinError 193] %1 不是有效的 Win32 应用程序。(numpy模块、MyQR模块)
哈哈哈哈哈。这个迷之神奇的bug居然被我解决了!!!! 之前调用numpy的时候也出现了相似的问题。所以今天居然解决了两个问题,实属开心!分享给大家既不是下载什么Python 32位,也不用什么anaconda或者什么玩意儿,其实我也不懂那些。 说咱自己的:不要再Python里面的interpret直接安装模块,将出问题的模块找到文件夹,删掉,用pip下载相应模块即可。1.找到出问题的模块,在Python-设置里面找到如下界面,复制模块地址,打开文件夹删除相应文件...原创 2020-08-02 18:22:16 · 23543 阅读 · 25 评论 -
squeeze() 和 unsqueeeze()
tensor.squeeze(index) 字面意思:就是在index处,增加一个维度为1的维度;tensor.unsqueeeze(index) :就是在index处,如果维度为1,就删掉这个维度。如果此处维度不为1,则不操作注意 比如tensor a 的维度是(2,1,3)a.squeeze(1) 的维度是(2,3),但a的维度仍然是(2,1,3)。就是squeeze和unsqueeze不会对tensor本身产生修改,修改后要赋值给别的变量才能够保存。如 b = a.squeeze(..原创 2020-11-06 19:56:59 · 587 阅读 · 0 评论 -
nn.ModuleList(list)
self.convs = nn.ModuleList([nn.Conv2d(1, config.num_filters, (k, config.embed)) for k in (2,3,4)])在这里list是多个model,可以理解成子模块。ModuleList的作用:不是创建三层前后连接的网络,而是创建三个上下并列的网络,所以称model里面的模型为子模块。这里只是创建了一层网络。conv2d官方文档...原创 2020-11-06 16:09:03 · 6828 阅读 · 1 评论 -
卷积神经网络(CNN)结构详解
一、CNN的基本结构:1.图像就是输入层2.接着是CNN特有的卷积层(convolution),卷积层的自带激活函数使用的是ReLU3.接着是CNN特有的池化层(pooling),4.卷积层+池化层的组合可以在隐藏层中出现很多次。也可以灵活组合,卷积+卷积+池化、卷积+卷积等5.在若干卷积层+池化层之后是全连接层(fully connected layer),其实就是DNN结构,只是输出层使用了Softmax激活函数来做图像识别的分类6.一般fc就为CNN的全连接层。全连接层一般..原创 2020-11-06 16:02:56 · 56735 阅读 · 2 评论 -
卷积
原文链接:https://blog.csdn.net/appleyuchi/article/details/78597516其中,矩阵A和B的尺寸分别为ma*na即mb*nb① 对矩阵A补零,第一行之前和最后一行之后都补mb-1行,第一列之前和最后一列之后都补nb-1列(注意conv2不支持其他的边界补充选项,函数内部对输入总是补零);之所以都是-1是因为卷积核要在图像A上面移动,移动的时候需要满足两者至少有一列或者一行是重叠的.② 将卷积核绕其中心旋转180度;.转载 2020-11-05 20:19:16 · 128 阅读 · 0 评论 -
TypeError: ‘type‘ object is not iterable
这个问题说的是 ‘type’对象是不可迭代对象。一般出现在迭代器的__next(self)__方法的代码块。(虽然报错可能指向for循环的那一行)这个bug的可能原因有很多,淡然也不只是‘type’,比如有‘int’等。总之就是不可迭代。我检查自己的代码,很久才发现,是在抛出异常StopIteration时,用了return。改为raise,即可。raise的用法:https://www.cnblogs.com/ggzhangxiaochao/p/9002847.html参考:ht.原创 2020-11-04 09:51:01 · 10457 阅读 · 0 评论 -
宏平均(macro avg)、微平均(micro avg)、加权平均(weighted avg)、精度(precision)、召回率recall、f1score、confusion matrix
分类任务:宏平均:对类的平均。有两类,直接 (0.24+0.73)/2 = 0.45微平均:对每个样本的平均。样本总数有7535+22462个 :0.24*7535+0.73*22462加权平均:考虑了权重的宏平均。0.24*(7535/29997)+0.73*(22462/29997)分类问题的几个评价指标(Precision、Recall、F1-Score、Micro-F1、Macro-F1):https://blog.csdn.net/sinat_28576553/ar..原创 2020-11-04 09:39:07 · 7251 阅读 · 1 评论 -
创建tensor
原文:https://blog.csdn.net/qq_28418387/article/details/97971328转载 2020-10-27 21:09:20 · 767 阅读 · 0 评论 -
python lambda函数和 for in if
lambda 写以各分割函数for in if 的分割函数lambda 的写法其实是为了简化函数的写法。冒号前是输入,冒号后是函数体。原创 2020-10-26 16:17:31 · 1476 阅读 · 0 评论 -
with torch.no_grad():
参考:https://blog.csdn.net/weixin_44134757/article/details/105775027在pytorch中,并不是所有的计算都需要生成计算图的。对tensor的计算,是默认生成计算图要强制不生成计算图,就用这一句话,在计算过程中,不会产生计算图。但是结果并没有差异。...转载 2020-10-21 22:32:07 · 163 阅读 · 0 评论 -
predic = torch.max(outputs.data, -1)[1].cpu()
背景是文本分类任务。output = torch.max(input,dim)input 这里是outputs.data,维度 [4,32,10] 的一个tensor,dim 是max函数 索引 的维度 0/1,0是按列,1是按行。-1是最后一个维度,一般也就是按行了。输出是两个tensor,第0个tensor是每行的最大值组成的,这里是所有行的最大值组成的tensor。第1个tensor是每行最大值对应的标签组成的。因为这里要找最大值对应的标签,找出来之后和class_list对比,就可以原创 2020-10-21 21:30:31 · 4448 阅读 · 2 评论 -
计算图和反向传播
原文链接:https://www.yiibai.com/python_deep_learning/python_deep_learning_computational_graphs.html什么是计算图计算图被定义为有向图,其中节点对应于数学运算。 计算图是表达和评估数学表达式的一种方式。例如,这里有一个简单的数学公式 -p = x + yShell我们可以绘制上述方程的计算图如下。上面的计算图具有一个加法节点(具有“+”符号的节点),其具有两个输入变量x和y以及一个输出q。转载 2020-10-21 17:28:22 · 258 阅读 · 2 评论 -
tqdm(进度条)模块的作用
在电脑终端上显示进度,使代码进度可视化原创 2020-10-20 16:06:21 · 921 阅读 · 0 评论 -
python lambda()函数
1.tokenizer = lambda x: [y for y in x] :x 是一个句子,这句话就是定义一个tokenizer的函数,作用是将句子里面的每一个字提取出来token = tokenizer(content) :#把一句话拆成一组单个字,返回一个列表...原创 2020-10-16 09:32:27 · 444 阅读 · 0 评论 -
if string.startswith(str,beg = 0,end = len(string))
作用:判断字符串是否以指定字符或子字符串开头一、函数说明语法:string.startswith(str, beg=0,end=len(string)) 或string[beg:end].startswith(str)参数说明:string: 被检测的字符串str: 指定的字符或者子字符串。(可以使用元组,会逐一匹配)beg: 设置字符串检测的起始位置(可选)end: 设置字符串检测的结束位置(可选)如果存在参数 beg 和 end,则在指定范围内...原创 2020-10-14 09:44:59 · 461 阅读 · 0 评论 -
随机种子
np.random.seed(1) #规定种子来源,1 就是个索引,可以理解为numpy的第一批种子torch.manual_seed(1) # 为CPU设置随机种子torch.cuda.manual_seed_all(1) # 为所有的GPU设置随机种子torch.backends.cudnn.deterministic = True # 确保每...原创 2020-10-13 22:01:52 · 495 阅读 · 0 评论