深度学习
文章平均质量分 77
Unstoppable~~~
Hiter
展开
-
利用register_forward_hook()精确定位到模型某一层的输入和输出
在论文中偶然读到一些方法会用到模型中间的隐藏层作为分类器,与模型最后一层作为分类器的性能进行对比,故而思考如何能够简便快捷地实现将模型某一层的输出输出拉取出来的方法,发现有现成hook函数可以做到这一点。原创 2023-08-23 15:35:57 · 495 阅读 · 0 评论 -
Deep Bidirectional Language-Knowledge Graph Pretraining论文阅读
最近的工作表明,知识图(KG)可以补充文本数据,提供结构化的背景知识, 为推理提供有用的支架。然而,这些作品并没有经过预先的训练来学习大规模的两种模态的深度融合,这限制了获得文本和 KG 完全联合表征的潜力。在这里,我们提出 DRAGON(深度双向语言知识图预训练),一种自我监督的方法,用于从文本和KG在规模上预训练深度联合的语言知识基础模型。具体来说,我们的模型采用成对的文本段和相关的 KG子图作为输入, 并双向融合来自两种模态的信息。原创 2023-04-23 11:27:51 · 624 阅读 · 2 评论 -
GPT-4博客介绍
为防止模型拒绝有效请求,我们从各种来源收集了多样化的数据集(例如,标记的生产数据、人类红队、模型生成的提示),并在允许和不允许的类别上应用安全奖励信号(具有正面或负面价值)。与之前的GPT模型一样,GPT-4基础模型的训练目标是预测文档中的下一个单词,并使用公开可用的数据(如网络数据)以及我们许可的数据进行训练。需要注意的是,RLHF并不能提高在各类考试上的成绩,模型的能力主要依赖数据和算力的堆砌,用简单的language modeling loss得到结果,然而,GPT-4的额外功能导致了新的风险面。原创 2023-04-07 11:25:43 · 639 阅读 · 0 评论 -
torch.max()详解
pytorch文档中提到:该函数返回一个元组:(值,索引),其中值是给定维度dim中输入张量每行的最大值。索引是找到的每个最大值(argmax)的索引位置。如果keepdim为True,则输出张量的大小与输入相同,但维度dim中的大小为1。否则dim被压缩,导致输出张量的维数比输入少1。注:若有多个最大值,则返回第一个最大值的索引。原创 2023-03-02 16:40:21 · 1022 阅读 · 0 评论 -
BertTokenizer的使用方法(超详细)
convert_tokens_to_ids是将分词后的token转化为id序列,而encode包含了分词和token转id过程,即encode是一个更全的过程,另外,encode默认使用basic的分词工具,以及会在句子前和尾部添加特殊字符[CLS]和[SEP],无需自己添加。从下可以看到,虽然encode直接使用tokenizer.tokenize()进行词拆分,会保留头尾特殊字符的完整性,但是自己也会额外添加特殊字符。将token映射为其对应的id(ids是我们训练中真正会用到的数据)原创 2023-03-01 23:39:07 · 14845 阅读 · 0 评论 -
Zero-shot(零次学习)简介
所以模型需要知道的信息是马的样本、老虎的样本、熊猫的样本和样本的标签,以及关于前三种动物和斑马的描述。假设我们已知驴子和马的形态特征,又已知老虎和鬣狗都是又相间条纹的动物,熊猫和企鹅是黑白相间的动物,再次的基础上,我们定义斑马是黑白条纹相间的马科动物。如今十分火热的纯监督模型往往需要足够多的样本才能训练出足够好的模型,并且用熊猫训练出来的分类器,只能对熊猫进行分类,其他物种都无法识别,也无法进行特征的综合推理,这样的模型功能还有待完善。ZSL这样的设置其实就是上文中识别斑马的过程中,已知的条件。原创 2023-02-19 11:27:44 · 20799 阅读 · 4 评论 -
Alexnet实现Caltech101数据集图像分类(pytorch实现)
从101个文件中读取图像数据(进行resize和RGB的转化,原始图像数据大小不一,必须resize),并为其加上101类标签(0-100)进行图像变换,并分出训练集,验证集和测试集自定义一个数据集类(继承自dataset)便于数据加载网络结构Alexnet模型由5个卷积层和3个池化Pooling 层 ,其中还有3个全连接层构成。AlexNet 跟 LeNet 结构类似,但使⽤了更多的卷积层和更⼤的参数空间来拟合⼤规模数据集 ImageNet。它是浅层神经⽹络和深度神经⽹络的分界线。Alexnet原创 2022-06-10 19:05:34 · 6128 阅读 · 5 评论 -
pytorch中.numpy()、.item()、.cpu()、.detach()及.data的使用
目录.numpy().item().cpu().detach()和.data(重点).numpy()Tensor.numpy()将Tensor转化为ndarray,这里的Tensor可以是标量或者向量(与item()不同)转换前后的dtype不会改变a = torch.tensor([[1.,2.]])a_numpy = a.numpy() #[[1., 2.]].item()将一个Tensor变量转换为python标量(int float等)常用于用于深度学习训练时,将loss值转换为原创 2022-05-09 09:23:21 · 13004 阅读 · 0 评论 -
torch.nn.CrossEntropyLoss()使用注意
torch.nn.CrossEntropyLoss()使用注意CrossEntropyLoss(将 nn.LogSoftmax() 和 nn.NLLLoss() 结合在一个类中)一般用于计算分类问题的损失值,可以计算出不同分布之间的差距。CLASS torch.nn.CrossEntropyLoss(weight: Optional[torch.Tensor] = None, size_average=None, ignore_index: int = -100, reduce=None, reduct原创 2022-05-05 23:37:48 · 2333 阅读 · 0 评论 -
1×1卷积在神经网络中的理解和应用
1×1卷积我们经常会在各种网络中看到1×1的卷积核,这是一个非常实用的卷积核,那么为什么要使用1×1的卷积核呢?我们可以从两个角度进行理解信息融合1×1卷积运算可以将多个通道的信息进行融合,例如上图中三个通道进行卷积后,变为一个通道,不同通道相同位置的像素会被加权相加在结果像素中。在MobileNet中,需要进行Depthwise和pointwise操作:Depthwise:将每一个通道分为一个组,每组一个卷积核专门负责这一个通道的卷积,相比于普通的卷积,计算量大大下降Poinwise:原创 2022-05-04 17:00:20 · 2588 阅读 · 0 评论 -
ResNet原理详解
目录Residual Net为什么要引入残差连接?残差网络结构解析残差块的实现ResNet模型实现Residual Net首先下图为一个简单的残差连接,我们先不介绍具体内涵,而是讨论一下为什么需要残差连接?注意:googlenet在这里是拼接,resnet是相加为什么要引入残差连接?首先大家已经形成了一个通识,在一定程度上,网络越深表达能力越强,性能越好。不过,好是好了,随着网络深度的增加,带来了许多问题:计算资源的消耗模型容易过拟合梯度消失/梯度爆炸问题的产生在resnet出来之原创 2022-05-04 14:58:05 · 6466 阅读 · 0 评论 -
pytorch中的dataset和DataLoader创建数据集进行训练
目录序言Dataset和DataLoaderDatasetDataLoader具体实现(构造数据集、加载数据集、训练)序言1.每次采用一个样本进行随机梯度下降,会得到随机性较好的训练结果,但是速度较慢,训练时间长2.加入batch,用全部的样本进行训练时速度十分快,但是会训练效果会下降。所以在这里引入mini-batch,综合二者的优点,得到折衷的结果。batch_size(批量大小):进行一次前馈、反馈、更新所用到的样本数量iteration(迭代次数):样本数量/批量大小一般来说PyTor原创 2022-05-03 20:52:46 · 2808 阅读 · 0 评论 -
Bert模型介绍及代码解析(pytorch)
21.Bert(预训练模型)动机基于微调的NLP模型预训练的模型抽取了足够多的信息新的任务只需要增加一个简单的输出层注:bert相当于只有编码器的transformer基于transformer的改进每个样本是一个句子对加入额外的片段嵌入位置编码可学习[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DwkojOLg-1649776319364)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images原创 2022-04-12 23:15:36 · 10423 阅读 · 3 评论 -
LSTM基本理论及手写数字识别实战应用(pytorch)
LSTM介绍LSTM的特点(与RNN的区别)具体实现流程公式汇总及总结LSTM实现手写数字识别(pytorch代码)导入环境定义超参数训练和测试数据定义定义LSTM模型LSTM模型训练和预测原创 2022-04-07 09:59:37 · 4011 阅读 · 1 评论 -
图解奇异值分解SVD
目录奇异值分解目的线性变换分解的物理意义推广到任意大小的矩阵压缩后的重构(利用U、V和删去部分值得Σ)SVD分解的计算计算流程奇异值分解目的将一个任意矩阵M,分解为三个矩阵的乘积形式线性变换拉伸:旋转:左乘一个正交矩阵分解的物理意义推广到任意大小的矩阵奇异值从上至下依次递减,可以去掉奇异值小的部分,进行数据压缩。压缩后的效果:压缩后的重构(利用U、V和删去部分值得Σ)SVD分解的计算引入特征值的求算计算流程...原创 2022-03-22 17:15:07 · 597 阅读 · 0 评论 -
Transformer模型(pytorch代码详解)
目录Transformer模型基本介绍多头注意力有掩码的多头注意力基于位置的前馈网络层归一化信息传递(对应结构图中连接解码器与编码器的线)预测多头注意力实现Transformer实现Transformer模型基本介绍与seq2seq相比transformer是一个纯粹基于注意力的架构(自注意力同时具有并行计算和最短的最大路径长度这两个优势),没有用到任何CNN和RNN。如下图所示,transformer是由编码器和解码器组成的。transformer的编码器和解码器是基于自注意力的模块叠加而成的,源原创 2022-02-12 16:33:22 · 8992 阅读 · 1 评论 -
自注意力和位置编码(含pytorch代码)
目录自注意力和位置编码自注意力位置编码绝对位置信息相对位置信息代码实现导入模块自注意力位置编码自注意力和位置编码自注意力自注意力池化层将xi当作key, value, query来对序列特征得到yi与CNN、RNN进行比较:最长路径:信息从序列前端的某个位置传递到末端的某个位置的路径self-attention在长句子中虽然计算复杂度很好,但能很快地抓取距离很远的信息(适合处理较长的序列,付出了计算复杂度的代价,计算量超大)位置编码与CNN/RNN不同,自注意力并没有记录位置信息在处理原创 2022-02-08 17:18:43 · 6039 阅读 · 0 评论 -
注意力机制——注意力评分函数(代码+详解)
目录注意力分数关于a函数的设计有两种思路1.加性注意力(Additive Attention)2.缩放点积注意力(Scaled Dot-Product Attention)模块导入遮蔽softmax操作加性注意力代码:补充知识:1.torch.repeat_interleave(data, repeat= , dim=)2.torch.nn.Linear(*in_features*, *out_features*, *bias=True*, *device=None*, dtype=None)3.torch原创 2022-02-07 13:12:15 · 16258 阅读 · 8 评论 -
注意力机制(含pytorch代码及各函数详解)
目录注意力机制非参注意力汇聚概述(不需要学习参数)参数化注意力机制概述正式系统学习1.平均汇聚(池化)2.非参数注意力汇聚(池化)3.带参数注意力汇聚注意力机制不随意线索:不需要有想法,一眼就看到的东西随意线索:想看书,所以去找了一本书1.卷积、全连接、池化层都只考虑不随意线索2.注意力机制则显示的考虑随意线索随意线索被称之为查询(query)每个输入是一个值(value)和不随意线索(key)的对通过注意力池化层来有偏向性的选择选择某些输入与之前学习的所有层的区别在于加入了查询(q原创 2022-01-28 12:37:54 · 19372 阅读 · 2 评论 -
卷积神经网络CNN原理+代码(pytorch实现MNIST集手写数字分类任务)
目录卷积神经网络前言卷积运算:卷积运算中几个常用的参数1.padding2.stride3.Max Pooling Layer实战演练设计一个卷积神经网络GPU的使用整体代码:运行结果卷积神经网络前言若将图像数据输入全连接层,可能会导致丧失一些位置信息卷积神经网络将图像按照原有的空间结构保存,不会丧失位置信息。卷积运算:1.以单通道为例:将将input中选中的部分与kernel进行数乘 :以上图为例对应元素相乘结果为211,并将结果填入output矩阵的左上角得到:最终得到的结果为原创 2022-01-12 17:52:20 · 32662 阅读 · 19 评论 -
pytorch搭建多层神经网络解决多分类问题(采用MNIST数据集)
前置知识可以参考同系列文章:目录pytorch搭建神经网络解决多分类问题softmax损失函数多分类的实现数据的准备构建模型、损失函数及优化器训练及测试部分训练结果pytorch搭建神经网络解决多分类问题softmax核心:最后一层使用softmax层1.求指数将负值转化为非负值2.分母将所有输出求和(归一化)保证条件如下:损失函数使用负对数似然函数(只有y=1的项才真正被计算,为0不影响结果):交叉熵损失函数的使用1.不需要单独使用sofmax(已经被包含在CrossEntro原创 2022-01-11 13:38:09 · 4111 阅读 · 0 评论 -
pytorch实现逻辑回归(代码实现)
pytorch实现逻辑回归,线性回归,代码,交叉熵原创 2022-01-09 19:17:34 · 2377 阅读 · 0 评论 -
pytorch完成线性回归任务(代码详解)
pytorch线性回归 前馈运算 反向传播 代码详解原创 2022-01-09 13:29:10 · 2289 阅读 · 1 评论