深度学习(pytorch+tensorflow)
文章平均质量分 55
深度学习中的一些知识
厄运鹰人
NLP学徒
展开
-
pytorch中的数据处理(torch.utils.data)
作用:通过torch.utils.data.Dataset和torch.utils.data.DataLoader这两个类,使数据的读取变得非常简单,快捷。torch.utils.data.Datasettorch.utils.data.Dataset是代表自定义数据集方法的抽象类,你可以自己定义你的数据类继承这个抽象类,非常简单,只需要定义__len__和__getitem__这两个方法就可以。当我们通过迭代的方式来取得每一个数据class CustomDataset(Dataset):原创 2021-12-07 11:15:45 · 538 阅读 · 0 评论 -
中文实体识别(采用BERT)
中文实体识别(采用BERT)数据预处理构建标签字典保存为pkl文件方便读取。读取数据字对应标签list序列序列截断操作,不超过最大长度,否则就截断。处理为BERT对应的字符将字符转为id索引长度不够,需要填充0(在bert中,填充的0不会计算self-attention,需要用到mask)输入到BERT模型中(见BERT学习笔记)得到输出结果为[batch_size,leng,dim]对输出向量进行标签预测W维度[dim,标签类别]、b偏差值[11]经过全连接层非线性函数原创 2021-09-06 16:35:50 · 342 阅读 · 0 评论 -
BERT学习笔记(利用到下游任务)
TansformerTransformer优点:并行计算(解决RNN不能并行问题)。self-attention。多语义词(杜鹃(花、鸟)),在不同语境和上下文表示不一样。Self_attention转换为Q(查询向量),K(被查询向量),V(特征信息),计算Q与K的内积每一个词Q会跟整个序列中每一个K做内积计算得分,基于得分分配权重(内积就是计算相似度,垂直就无关系)下图是一个词的向量计算的原理,如果合成为一个矩阵(就是并行计算了),这个就是Transfomer并行计算的作用。原创 2021-09-05 16:20:33 · 684 阅读 · 0 评论 -
《深度学习与神经网络》(网络优化与正则化)
神经网络存在的问题:优化问题:神经网络模型是一个非凸函数,梯度消失,参数比较多,训练数据也比较大,会导致训练的效率比较低。泛化问题:容易过拟合。优化的难点网络结构多样性:CNN、RNN等低维空间的非凸优化问题主要是存在一些局部最优点,出发点应该是如何初始参数和逃离局部最优点。高维的非凸优化问题主要是逃离鞍点优化算法**小批量梯度下降:**损失函数关于参数θ 的偏导数为更新的梯度gtg_tgt,学习率是更新参数时的一个常量。使用梯度下降来更新参数:θt←θt−1−α原创 2021-09-03 10:14:18 · 171 阅读 · 0 评论 -
LSTM解决梯度消失问题
为什么rnn循环神经网络会有梯度消失的情况,而lstm可以避免这种情况的发生?使用梯度下降的方式来更新,如果有很多个这样的数相乘的话,就会使得梯度趋近于0。梯度消失导致的问题其实是权重w几乎不更新,这样就很难找到一个合适的权重w,去映射输入值与输出值之间的关系。 - LSTM中神经元之间的连接不仅仅有h, 还有信息C, h在神经元之间的传递会经过sigmoid函数处理,但是C不会。所以与C相关的权重W的更新不会因为神经元链过长而产生梯度消失的现象(指的是,遗忘门,信息增益门的权重w)。但是输出门原创 2021-09-02 16:06:53 · 730 阅读 · 0 评论 -
《深度学习与神经网络》(注意力机制与外部记忆)
*神经网络存在的问题:*由于优化算法和计算能力的限制,在实践中很难达到通用近似的能力。处理大量的输入信息或者复杂的计算流程时,目前计算机的计算能力依然是限制神经网络发展的瓶颈。解决的一些方法:引入了局部连接、 权重共享以及汇聚操作来简化神经网络结构。大脑神经系统有两个重要机制可以解决信息过载问题: 注意力和记忆机制。定义:注意力,通过自上而下的信息选择机制来过滤掉大量的无关信息,是解决信息超载问题的主要手段的一种资源分配方案,将计算资源分配给更重要的任务。外部记忆,优化神经网络的记忆结构来提高神原创 2021-09-01 10:37:20 · 419 阅读 · 0 评论 -
训练模型(检查GPU、numpy转换等)
检查GPU是否可用:gpu = torch.cuda.is_available()cuDNN使用非确定性算法,并且可以使用torch.backends.cudnn.enabled = False来进行禁用,设置为使用使用非确定性算法:torch.backends.cudnn.enabled重点理解:定义一个数据类,封装所有预处理的数据,最后将数据类存储为一个pkl的二进制文件,以便下一次直接读取不在需要重新预处理。将numpy的数组复制给torch的方式:self.word_embeddings.w.原创 2021-08-31 20:33:13 · 223 阅读 · 0 评论 -
《神经网络与深度学习》(2)前馈神经网络
前馈神经网络**激活函数:**为了增强网络的表示能力和学习能力。连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数。激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。激活函数类型:Sigmoid 型激活函数、Tanh 函数、修正线性单元(Rectified Linear Unit, ReLU) 、指数线性单元(Exponential Linear原创 2021-08-30 20:58:33 · 116 阅读 · 0 评论 -
《神经网络与深度学习》(1)
定义和作用人工神经网络不同节点之间的连接被赋予了不同的权重,每个权重代表了一个节点对另一个节点的影响大小。每个节点代表一种特定函数,来自其他节点的信息经过其相应的权重综合计算,输入到一个激励函数中并得到一个新的活性值(兴奋或抑制)。反向传播算法才有效地解决了多层神经网络的学习问题,并成为最为流行的神经网络学习算法。传统机器学习数据预处理、数据预处理、特征转换、函数预测。传统的机器学习模型主要关注于最后一步,即构建预测函数。存在问题:由于特征处理一般都需要人工干预完成,利用人类的经验来选原创 2021-08-30 20:29:55 · 141 阅读 · 0 评论 -
Keras基础模型框架
Kerars是基于tensorflow框架的:符号主义的计算首先定义各种变量,“计算图”,计算图规定了各个变量之间的计算关系。建立好的计算图需要编译已确定其内部细节,然而,此时的计算图还是一个“空壳子”,里面没有任何实际的数据,只有当你把需要运算的输入放进去后,才能在整个模型中形成数据流,从而形成输出值训练是静态框架。导入基本包from keras.models import Model, Input#模型需要的from keras.layers import Dense, Bidirectional原创 2021-08-24 15:22:19 · 256 阅读 · 0 评论 -
Argsparse包初始化程序中的参数
参数配置常用方法用类去包装Argparse包Hydra方法(见后)Argsparse:初始化参数。作用:不会写死参数,可以自定义调整参数修改默认参数:–status=test -h(帮助)–status testparser = argparse.ArgumentParser(description='rnn_args')parser.add_argument('--embedding_dim', type=int, default=300,原创 2021-01-07 20:49:53 · 315 阅读 · 0 评论 -
pytorch代码学习
基本函数unsqueeze(1):扩充一个维度为一的维度out = out.unsqueeze(-1) # [B, L, Hs, 1]压缩维度为一的,即删除Squeeze(1)学习模型是看shape的变化,不是看参数,要灵活torch.size(x)取维度大小基本运算torch.cat()torch.cat([input,ht],-1)word_input_cat = torch.cat([word_inputs_d, gaz_embeds_cat], dim=-1) #(b,l,原创 2021-01-10 11:30:38 · 361 阅读 · 0 评论