- 博客(24)
- 收藏
- 关注
原创 125 self-attention and 多头注意力机制
然而我们的multi-head 思想是,我哦们一句话或者一张图中有多个点值得我们去注意,所以我们将这句话或者图分成几个部分,然后去用注意力机制,这就叫做多头注意力机制。我们先搞了一个size为x,数值全为1的一个矩阵,然后我们将pad的那些数据全都变成0,然后乘上之前的x,构建成mask-x,这样就能使得数据变得简单。之前在Rnn里面我们用的是pack,我们规避了一些不必要的数据进行运算。然后我们回忆一下自注意力机制。我们先回顾一下注意力机制。
2024-08-16 11:08:01
242
原创 1130TRanSform——位置编码。
位置编码的作用,之前我们在做古诗生成的时候我们为了学习字字之间的信息都是将每个字的信息一层层的往下传递,用的是rnn,加入了位置编码之后我们就不用一层一层向下传递了,类似与将wordembedding,位置编码也可以用随机矩阵,比如我们产生一个-1到1的随机矩阵,还有一个就是我们直接用他的index做位置编码行不行,这里是强烈不建议,首先index、是有大小关系的,其次相邻的位置难以辨认,我们自然是想找一个有规则的矩阵来表示位置编码,transformer中用的就是sin和cos构成的一组编码。
2024-08-14 08:27:24
230
原创 1130 pack的用法,attention的介绍
我们对句向量进行填充的时候,总会加上很多0,这会对后续的计算进行影响,不管是准确率还是速度,所以我们可以让她计算的时候之间算那些非0的部分。注意力机制就是我们去得到一个得分矩阵,用我们的得分矩阵去优化我们的矩阵,使得我们更关注于我们想注意的点上面。双头是我们将句子分为两段,A股和港股都很重要。多头是将句子分为多段,每一段都进行注意力机制。单头是我们将一句话中抽出重要信息,此处介绍一下注意力机制的叫法。pack是干什么用的?同步A股,港股容量回调。
2024-08-14 07:18:52
279
原创 1128seq2seq
在训练的时候我们值得注意的一点还是,我们任务的构建,我们在一开始构建chn—to_index的时候,我们加入了star and end 后面我们在任务构建的时候,我们将chn_to_index放到decoder的时候我们取得是[;测试的时候也要注意,我们把输入的英文正常操作,变成eng_index放入到encoder中,然后我们将其句子级别的输出结合chn——index放入到模型中,注意我们这里面,将chn_index 输入的是star 然后写一个 while true 去生成文件。
2024-08-13 22:33:20
395
原创 1116Rnn复现
首先是把包都导好,然后开始写主函数,第一部读取数据,定义getdata函数,这里我们映入了一个参数,将数据集给排序,然后给读到的数据建立word2index,开始设置参数,batchsize,embedding_num,hidden_num,class_num,梯度消失就是最后的信息里面已经不包括或者包括很少最前面的字的信息了,梯度爆炸是问哦们的h'是经过加上历史信息才变成h''的,这里面会引起梯度爆炸,所以我们后面加了激活函数tanh,也可以换成其他的,但是要考虑会不会倒是梯度爆炸,
2024-08-07 10:33:16
468
原创 114bert词向量拼接
我们现在要做的就是将bert中的embedding拿到我们的数据中,利用他的embedding来训练,首先呢我们肯定是要拿到他的embedding矩阵,然后将我们的x(就是batch_size len)变成(batch_size len embedding)这样的矩阵去参与计算,怎么获得embedding矩阵呢?就是在model中引入,我们这里的策略就是先加载bert_embedding,然后我们按照之前的方法,去通过torch创建一个随机数矩阵,然后将随机数据矩阵的参数换成我们的就可以了,
2024-08-06 00:19:53
1084
3
原创 117word2vec
之前文本分类的时候我们知道不管是自己设计的还是pytorch里面自带的随机数embedding都还只是随机数,如果我们能够训练这个模型,肯定是最好的,我们这里要学的word2vec就是去训练一个embedding矩阵,可以算上是一个预训练模型了。为什么说他不是预训练模型呢,因为真正的预训练模型能够根据你的数据对此向量进行调整,叫做微调,但是这个词向量模型一旦训练完后,想要进行微调是很难的。构建任务:代码思路:我们先读数据,然后将数据分词放到一个列表中。
2024-08-05 00:44:27
525
原创 111,文本分类
还要注意一点,我们要提前构建好这个词向量矩阵,不能说遇到一个字构建一个字,那样同样的字也会有不一样的向量表示,我们提前构建好词向量,然后通过index去取向量,去构建我们句子的向量,步骤就是我们先构建word2index 然后通过 word2index的大小构建我们的随机数词向量,然后再通过每个字的index去我们构建好的随机数词向量矩阵中取,以此得到我们的句向量矩阵。4主要在做的事情就是构建一个embedding。然后里面有一个是否需要更新动态词向量,使用torch_embedding。
2024-08-01 14:16:05
389
原创 1019手写数字识别
这里我们统筹一下代码,在执行pre = model(x)的时候,他会去到Module的__call__中,他会让代码去执行model的forward,这时候就是去循环Model的每一层了,第一层Linear,代码会执行Module的__call__,Module会让其执行Linear的forward,然后是Sigmoid.....都是这个步骤。在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在下一次迭代中,继续随机隐藏一些神经元,直至训练结束。
2024-07-31 12:53:10
1752
原创 1017线性回归——矩阵,逻辑回归——多层求导
然后还有就是stack的笔记,在上面,也对应着拼接数据时候遇到的维度问题,然后用squeeze将中间的维度给去掉。上面这个链接是关于对sklearn中transform()和fit_transform()的深入理解。上面这个链接是关于axis的,其中包括最大括号匹配法,逻辑回归--多层求导。
2024-07-24 17:19:36
258
原创 线性回归房价预测
房价预测1预测不太准,房价和年份不在一个维度上,一个能达到7万一个才两千,如果关注的是楼层的话,差距就更大。所以我们把年份给归一化,我们归一化有两个目的,第一个就是缩小数据之间的差距,第二个就是让其满足某种分布归一化有两种典型的归一化:z-score and linear。这样的操作,还是看数据,我们数据中如果有脏数据的话,我们一个一个的拿数据可能会影响模型的学习,但是后面我们数据量大起来的时候,一下给他扔进去又不现实,所以后面我们会一个batch一个batch的取数据,处理数据,学习数据。
2024-07-23 21:42:48
675
原创 1010深度学习理解and数据的裁剪及填充
这里首先是对文件夹的一个读取数据的操作,然后去dataset里面一条一条的读取数据,在dataloader中读取数据我们还要做三件事,裁剪,word_to_index,填充,最后输出的是一个矩阵,然后我们将其扔到模型中去。这个代码就是将数据取出来,后面我们对取出来的数据进行一个操作。对将数据变成index,然后进行填充裁剪。yield用的不多,可以看一哈。
2024-07-18 22:57:15
213
1
原创 python array中[a,b,c]使用方法详解
None的作用于np.newaxis的作用是一样的,下面给出一个例子,大家可以体会一下。:前后有数字时,相当于把那维当做一个list,1:3就代表取索引1,2的元素。在array中取到了位置[a,b,c]的元素,不多做解释。None是用来增加维度的,在哪里出现就给哪里增加1维。其中的关系给出两个例子,大家可以思考其中的原理。只有:时,代表取某一维度的全部元素。
2024-07-17 18:08:26
325
原创 108dataset 的细节
我们利用next[list1]去取数据的时候它提示'list' object is not an iterator。所以我们在那个循环中,代码会先去iter中,然后让其返回一个可以next的对象。python是面对对象的,都是类化的东西,所以都是有__init__的。python里面所有的对象or变量都有__init__这个魔术方法?__xxx__ 这是魔术方法(在某种特定条件下能够触发)在list里面没有__next__?里面的assert是非常重要的。dir是看里面的内置函数。提示他不是一个迭代器,
2024-07-17 17:48:09
198
原创 929读数据,取数据,打乱数据
在使用numpy的时候,取数据就会变得很简单了,我们在一开始传入数据的时候就将其变成numpy形式,在打乱索引的时候也可以用numpy直接打乱即可最方便的是我们直接去掉了gititem,之前用getitem是为了在--next--中传一个索引值,然后调用getitem去取数据,然而我们用了numpy之后,它满足一个高级索引,就可以直接取到我们想要的数据了。这个版本就是将dataset和dataloader给分开,这一部分记得怎么联系。第三个版本使用numpy。
2024-07-17 16:50:29
263
原创 链表基础知识+移除链表元素+设计链表+反转链表
接下来说一说链表的定义。链表节点的定义,很多同学在面试的时候都写不好。这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定义的。而在面试的时候,一旦要自己手写链表,就写的错漏百出。这段代码定义了一个名为 `ListNode` 的类,它通常用于在Python中创建和操作链表。链表是一种线性数据结构,其中每个元素(通常称为节点)包含一个值和一个指向下一个节点的引用。
2024-04-22 17:36:33
1749
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅