- 博客(75)
- 收藏
- 关注
原创 大模型面试问题准备
问题描述:上溢出:y=e^x中,如果x取非常大的正数,y(float32格式数据)就会溢出;下溢出:如果x取非常小的负数,y就是0.00000000几,超过有效位数后,y就是0了,如果分母都是0,就会出错。解决方法:x同时减去x_max,即可解决。上溢出:最大值变为了0,因此y不会溢出;下溢出:分母必然存在1,因此不会为0。
2025-02-24 21:02:58
759
原创 多模态模型:学习笔记(一)
例如,在图像中,遮挡掉的补丁可以通过预测正确的像素值来学习图像特征,这涉及到了图像的低频和高频信息的处理。例如,将224x224的图像分割为14x14的patch,每个patch是16x16像素,然后将每个patch的像素值展平为一个256维的向量,通过线性层投影到768维的嵌入空间。例如,在Transformer架构中,不同层的特征具有不同的语义级别(低层偏向于边缘、纹理等细节,高层偏向于对象、场景等语义),跨层注意力可以促进不同语义层次之间的信息流动,让模型更全面地掌握图像的细节和整体信息。
2025-02-16 15:52:35
804
原创 Leetcode:学习记录(一)
大于等于给定值的元素,左指针右指针从两边开始,中间大于等于给定值则右指针变为中间,反之则左指针变为中间。红蓝染色法:以最后一个元素为界可以区分两段,L\M\R中M小于最后一个元素,那么M就在右边一段,M的右侧就是蓝色,大于最后一个元素,M就在左边一段,M的左侧是红色。右指针从左到右遍历,在每个右指针下,如果去掉左边元素的元素和大于等于给定值则左指针右移一次,直到小于给定值,右指针右移一个。右指针从左到右遍历,在每个右指针下,乘积大于等于给定值则左指针右移一次,直到小于给定值,右指针右移一个。
2025-02-13 23:36:14
657
原创 机器学习:学习记录(二)
非线性函数:一种非线性映射,在二维空间中不是一条直线(曲线或折线),通常不满足可加性和齐次性。ReLU函数:非线性激活函数,简单可以写作max(0,x),在0处不可导,但是可以人为定义其导数。优点:缓解了sigmoid函数梯度消失的问题,单侧抑制符合生物神经元特征,带来了稀疏性(dropout),缓解了过拟合。softplus函数:非线性激活函数,可以看作ReLU函数的光滑近似,该函数的导数为logistic函数。logistic函数(sigmoid函数):非线性激活函数,将R区间映射到(0,1)区间。
2025-02-09 10:40:09
183
原创 机器学习:学习记录(一)
另外,我们的样本属性并不一定能完全代表分类的标准,可能有漏掉的特征,也可能有不准确的特征。具体来说,首先计算好瓜坏瓜这个随机变量的信息熵,然后计算特征A各个可能性下的好瓜坏瓜的信息熵的期望,相减得到信息增益,计算所有特征的信息增益,选取信息增益最大的作为节点。贝叶斯分类器就是在这种假设下的分类器,只需要求出在输入变量(特征)X1...Xn的条件下,各个可能类别的条件概率,找到最大的即为要分的类。条件概率:一个事件在另一个事件发生条件下的概率,即P(B|A),若两者独立,则等于P(B)
2025-02-07 23:43:53
1156
原创 日拱一卒(20)——leetcode学习记录:大小为 K 且平均值大于等于阈值的子数组数目
滑动窗思路,计算长度为k的滑动窗的平均值,关键点在于,每滑动一次,只需要去掉头增加尾,而不需要重新全部计算,进而将计算量从O(n*k)降低为O(n)给定数组,统计数组中长度为k的子数组且该子数组的平均值大于threshold的数量。
2025-01-15 17:41:39
315
原创 无监督学习通俗理解
在洗钱行为的检测中,需要将这种洗钱的异常行为和正常行为区分开,但是我们不知道洗钱行为的标准是什么样的,因此用到了无监督学习。目标是将这些行为数据的分布在一个高维空间中是两大块,类间距离远,类内距离近。因此它的标准就是很难区分开。
2025-01-06 15:50:07
84
原创 日拱一卒(19)——leetcode学习记录:两个子序列的最大点积
初值已经解决,那么下一步则是递推关系,f[i][j]是nums1前i个元素的子序列和nums2前j个元素的子序列的子序列最大点积,将f[i][j]转换为前面的历史计算结果,即可找到递推关系。当nums1[i]和nums2[j]组成点积时,f[i][j] = max(f[i-1][j-1],f[i-1]f[j-1]+xij,xij),不组成点积时,f[i][j] = max(f[i-1][j],f[i][j-1]),取两者最大值即可。遇事不决就递归,左脚踩右脚是升天最好的方式。
2024-12-20 16:04:39
296
原创 日拱一卒(18)——leetcode学习记录:二叉树中的伪回文路径
一、题目给你一棵二叉树,每个节点的值为 1 到 9。我们称二叉树中的一条路径是 「」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。请你返回从根到叶子节点的所有路径中路径的数目。二、思路。
2024-12-18 15:22:30
1036
原创 日拱一卒(17)——leetcode学习记录:定长字符串中元音字符的数量
统计前k个字符中元音的数量,然后往后滑动,增加的一个新的,剔除的前面的旧的,判断是否是元音,进行数量更新。时间复杂度与s的长度成正比。的单个子字符串中可能包含的最大元音字母数。子字符串 "iii" 包含 3 个元音字母。
2024-12-14 19:58:07
265
原创 日拱一卒(16)——leetcode学习记录:山脉数组峰值索引
要求是log(n)的时间复杂度,那么应该采用二分法。具体是找到最大的元素的一半,直至找到峰顶元素。这里实现的细节值得推敲,包括终止条件、判断条件的设置。你必须设计并实现时间复杂度为。,其中的值递增到一个。返回峰值元素的下标。
2024-12-13 21:49:56
401
原创 日拱一卒(15)——leetcode学习记录:分割字符串最大得分
这里的计算存在重复的操作,可以进行简化。实际上每次分割后的分数计算,只需要计算分割点处的元素对原始分数的影响,加一或者减一,其他元素无需重复计算。使得时间复杂度降低为O(n).将字符串从头到尾分割,计算每次分割的分数。这里的时间复杂度需要注意,分割的次数与字符串长度线性相关,每次分割的分数计算业余长度线性相关,因此时间复杂度是O(n^2);给你一个由若干 0 和 1 组成的字符串。,请你计算并返回将该字符串分割成两个。子字符串)所能获得的最大得分。「分割字符串的得分」为。
2024-12-11 15:19:49
284
原创 日拱一卒(14)——leetcode学习记录:转置矩阵
创建一个转置矩阵大小的全零二维数组。遍历原二维数组的各个元素,放置到转置后的位置。给定一个二维数组,求这个数组的转置矩阵。难点在于创建新数组。
2024-12-10 23:15:02
308
原创 日拱一卒(13)——leetcode学习记录:3的幂
不同于2的幂次,无法使用按位与进行判断。使用log计算也存在精度问题,无法实现。这里可以使用3^19的因数进行判断。n如果能被3整除,则继续整除,否则返回False。判断一个整数n是否是3的幂次。
2024-12-09 21:40:43
251
原创 日拱一卒(12)——leetcode学习记录:2的幂
2. 数学法:还是从数学上解决这个问题,观察2的幂的整数的规律,在2进制中规律明显,即只存在一个1。利用这一点添加判别条件找出这种类型的,判别条件:n&(n-1)==0,n和n-1进行按位与运算,会将最低位的1去掉。1. 递归法:如果n是0,返回False,如果n是1,返回True,其他情况,将n//2递归。判断一个整数n是否是2的幂次,是返回True,否返回False。
2024-12-07 21:43:19
202
原创 日拱一卒(11)——leetcode学习记录:各位相加
暴力求解:循环递归,已知num,通过整除和取余获取各位数字,相加得到结果,如果为一位数,直接返回,否则重新进行上述操作。求各位数的方法可以优化,可以直接讲数字转换为str,就可以获取各位,然后再转换为int相加。更高级的方法是从数学上优化,对十进制数字各位相加,本质上是对9进行取余。# 基本的递归终止条件,当 num 已经是一个一位数时直接返回。,反复将各个位上的数字相加,直到结果为一位数。# 递归调用,直到结果为一位数。# 计算各位数字之和。
2024-12-06 12:08:11
411
原创 日拱一卒(10)——leetcode学习记录:统计好三元组
continue # 如果不满足 |arr[i] - arr[j]| <= a,跳过。for j in range(i + 1, n - 1): # j 从 i+1 到 n-2。for k in range(j + 1, n): # k 从 j+1 到 n-1。遍历i,遍历j,不满足条件1则continue,满足则遍历k,满足条件2和3计数加一,否则不加。for i in range(n - 2): # i 从 0 到 n-3。请你统计其中好三元组的数量。满足下列全部条件,则认为它是一个。
2024-12-05 12:40:30
346
原创 日拱一卒(9)——leetcode学习记录:两数组中位数
首先看到时间复杂度的要求,表明应该与二分法相关,如何把这个问题与二分挂钩呢。这个问题要找两个数组合并后的中位数,实际上,合并后数组的中位数就是将数组分成两半,中间的数就是中位数。换句话说要将这个数组分成两个大小相等的数组,其中一个数组中的最大元素小于另一个数组的最小元素,如下图所示。首先要建模,对这个问题有一个具体的表达,建模的方式决定了解决问题的难易程度。可见,问题的关键在于找到这样一个分割线,使得左侧的最大值小于右侧的最小值。的时间复杂度内找出这两个数组的中位数。
2024-12-04 17:04:58
604
原创 衍射光学理解
光场可以用傅里叶变换,得到频谱(物理意义是各个方向的平面波加权求和,权重是U的傅里叶系数)2. 对上面用菲涅尔近似,得到菲涅尔衍射公式(光源和观察屏距离衍射板有限远)3. 进一步近似得到夫琅禾费衍射(光源和观察屏距离衍射板无限远)衍射光学研究的是光场的传播规律。4. 角谱理论(另一种分析思路)1. 基尔霍夫、瑞利索墨菲公式。
2024-11-11 16:22:06
294
原创 数据结构学习
类似于列表,元素有序,因此查询速度快,但增删复杂,每次增删,会影响后面的索引。节点:元素和下一个元素的指针组成,增删快,查询慢,占内存多。多对多,广度优先和深度优先。一对多,包含元素和指针。
2024-09-13 15:51:50
108
原创 大模型的架构分类
核心思想是利用编码器对输入序列进行编码,提取其特征和语义信息,并将编码结果传递给解码器。然后,解码器根据编码结果生成相应的输出序列。这种架构的优点是能够更好地处理输入序列和输出序列之间的关系,从而提高机器翻译和对话生成等任务的准确性。缺点是模型复杂度较高,训练时间和计算资源消耗较大。
2024-09-04 18:00:59
246
原创 日拱一卒(8)——leetcode学习记录:位1的个数
设置位就是值为1的位,因此需要将十进制转换为二进制,方法是余2得到从低到高位的数值,整除2得到下一次计算的数。编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中。
2024-08-20 21:57:20
218
原创 日拱一卒(7)——leetcode学习记录:颠倒二进制位
python3下,输入是10进制整数,依次除以2,获取二进制从低位至高位,翻转正好对应从高位至地位,再转换为十进制输出。因此返回 964176192,其二进制表示形式为。颠倒给定的 32 位无符号整数的二进制位。
2024-08-19 21:00:22
293
原创 日拱一卒(6)——leetcode学习记录:相交链表——我走过你走的路,只为与你相见
用两个指针,node.next查找相同链表,但是无法保证同时到达相同节点,因此需要遍历两遍,即A遍历完,去遍历B,B遍历完去遍历A,这样每个指针都会走A+B这两个链表,而相同之处肯定在末尾,因此在最后会同时达到相同节点。,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回。确实挺浪漫的,我走过你走的路,只为与你相见。,函数返回结果后,链表必须。整个链式结构中不存在环。给你两个单链表的头节点。
2024-08-17 23:56:21
235
原创 日拱一卒(5)——leetcode学习记录:股票购买
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。遍历价格中的元素,以及该元素前的最小元素,计算利润,更新最大利润。遍历价格中的元素,及该元素后最大的元素,计算利润,更新最大利润。问题:每次计算最大值都需要遍历一次,如果改为复用就能减少时间。设计一个算法来计算你所能获取的最大利润。买入这只股票,并选择在。1. 暴力求解(超时)
2024-08-17 22:06:38
255
原创 日拱一卒(4)——leetcode学习记录:路径总和
左右节点都存在,返回 递归(左子节点,targetSum-root.val)or递归(右子节点,targetSum-root.val)其他,返回 递归(左子节点or右子节点,targetSum-root.val)左右子节点都不存在,返回targetSum == root.val。的路径,这条路径上所有节点值相加等于目标和。和一个表示目标和的整数。节点不存在,返回False。是指没有子节点的节点。
2024-08-17 20:25:49
280
原创 日拱一卒(3)——leetcode学习记录:二叉树最小深度
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。给定一个二叉树,找出其最小深度。叶子节点是指没有子节点的节点。编程小白,所以结果比较差,见笑。1. 递归计算二叉树的深度。一、任务:平衡二叉树。
2024-08-16 21:11:00
276
原创 日拱一卒(2)——leetcode学习记录:平衡二叉树(二)
b. 左右子节点都存在,返回 max(1+递归(左子节点),1+递归(右子节点))3. 左右子节点深度差小于等于1,返回 递归 左子节点判断and右子节点判断。a. 左右子节点存在一个,返回 1+递归(存在的子节点)d.大前提,如果主节点为None,返回 0。c. 左右子节点都不存在,返回1。2. 左右子节点深度差大于1,返回 False。给定一个二叉树,判断它是否是 平衡二叉树。编程小白,所以结果比较差,见笑。1. 递归计算二叉树的深度。一、任务:平衡二叉树。
2024-08-15 23:21:02
314
原创 机器学习——全连接(MLP多层感知机)的理解
全连接即是矩阵乘,因此在transformer中获取QKV理论上是输入与QKV权重矩阵相乘,但实际操作则是使用全连接即nn.Linear(),注意这里的输入和输出都是二维的[batch,d_model],即每个样本是一维的。
2024-08-15 11:45:11
422
原创 transformer学习——注意力、自注意力、交叉注意力、多头注意力
注意力机制、自注意力机制、交叉注意力机制 注意力机制的查询和键是不同源的,常见于Encoder-Decoder模型中,例如在中译英模型中,查询是中文单词的特征,键是英文单词的特征 下图,注意力被引导至书的原因是查询(自主性提示,想读一本书)和键(非自主性提示,书的特征)相互作用,引导值(输入,书的信息)被看到。 自注意力机制(输入是一个batchsize,即多个样本,即QKV同源) 交叉注意力机制(输入是不同特征空间的数据,例如文本和图像,即Q与KV不同源),自注意力机制和交叉注
2024-08-15 11:40:22
570
原创 日拱一卒——leetcode学习记录:平衡二叉树
2. 注意每次返回的都是TreeNode,即二叉树,二叉树定义很简单,但是通过递归可以使left和right都为TreeNode。c. nums长度大于2,返回TreeNode,val为中心值,left递归,right递归。b. nums长度为2,返回TreeNode,val为第二个元素,left递归。a. nums长度为1,返回TreeNode,val为第一个元素。编程小白,所以结果比较差,见笑。排列,请你将其转换为一棵。
2024-08-14 22:56:06
446
原创 卷积神经网络理解
五、因此神经网络是在拟合一个分布,能够明显的将这个类别与其他区分开。三、K1*K2*K3是一个更大的卷积核(全卷积)一、神经网络的卷积和二维离散卷积的区别。四、相关操作:分布越相似,相关结果越大。
2024-08-01 15:14:57
258
原创 CNN神经网络调参技巧
2.若干块,每块:卷积+激活+Dropout。3.若干块,每块:fc+激活+Dropout。1.若干块,每块:卷积+BN+激活+池化。
2024-06-27 15:19:58
648
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人