- 博客(49)
- 收藏
- 关注
原创 深度学习——Transformer代码
输入到 LayerNorm 的 tensor 形状是:(B, L, d_model)注意力机制实际上就是一个公式,给定三个向量q、 k、 v,返回一个向量。归一化就是:不管你前面怎么算,我强行把每一层的输出拉回到标准正态分布。对每个词自己的 d_model 个特征(即最后一个参数)做归一化。调用attention机制。
2026-05-02 14:56:32
173
原创 深度学习基础——(3)视觉处理基础实战【CNN实现CIFAR10 多分类】
使用全局平均池化确实能减少很多参数,而且泛化能力也比较好。它的缺点是收敛速度比较慢,但是这个不足可以通过增加循环次数进行弥补。通过一个用卷积网络实现分类的实例,来说明如何处理数据,借助 nn工具箱来实现神经网络,并实现训练测试等完整过程。前者只用了16022个参数,后者使用了173742个参数,是前者的10倍多。循环同样的次数,其精度达到 63% 左右,但其使用的参数比没使用全局池化层的网络少很。:包含 10 类小图片:飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车。简单,如果遇到复杂网络,差距将更大。
2026-04-30 21:25:51
305
原创 深度学习基础——(2)视觉处理基础
黑白图(灰度图):形状 [高度H,宽度W],每个像素 0-255 ,0 表示纯黑,255 表示纯白彩色图(RGB):形状 [通道C,高度H,宽度W],3个通道(红色R,绿色G,蓝色B),每一次都是一张灰度梳子矩阵,叠加成彩色。深度学习统一格式:[Batch, Channel, Height, Width]通道数(灰度 = 1,彩色 = 3)图像天然具备两大关键结构特征,优秀的图像神经网络(CNN),必须贴合、保留这两种特性。局部性 Locality。
2026-04-27 17:24:44
294
原创 深度学习基础——(1)机器学习基础
机器学习是人工智能的分支,让计算机不从人为硬编码规则,而是从大量数据中自动学习规律、挖掘模式,并利用学到的规律,完成预测、分类、判断、识别等任务。机器学习的基本任务一般分为4大类:监督学习、无监督学习、半监督学习和强化学习。学习类型核心原理典型任务实际案例监督学习训练数据带有明确标签(输入 + 正确答案),模型依据标准答案修正误差、学习映射规律分类、回归手写数字识别、猫狗分类、房价预测无监督学习训练使用无标签数据,无标准答案,模型自动挖掘数据内部结构、分布与相似特征聚类、降维。
2026-04-26 16:49:45
300
原创 pytorch基础——(1的实战)pytorch实现线性回归任务
损失函数的公式预测值和真实值的差的平方,差越大,损失越大。前面的 1/2 是为了后面求导方便,不影响优化结果。
2026-04-22 18:48:19
348
原创 Pytorch基础——(1)Tensor基础与autograd
Tensor 就是 PyTorch 里的 “数组”,和 NumPy 的数组几乎一样,但能在 GPU 上运行。二维矩阵乘法,A 形状:(n, m),B 形状:(m, p),相乘后形状:(n, p)高维矩阵乘法,乘法仅在最后两个维度上,要求前面的维度必须保持一致。逆运算:必须是浮点型、可逆方阵。多维矩阵只对【最后两个维度】生效。用 .dtype 属性查看 Tensor 的类型。多维矩阵只对【最后两个维度】生效。自然指数 eˣ:torch.exp()用 .type () 转换类型。
2026-04-22 13:39:16
358
原创 深度学习——SETR(Segmentation Transformer)学习(2020.12)
输入一张图片,输出一个或多个类别。只关心整张图的主体是什么,不关心位置、形状、边界。模型关心全局语义、整体特征,不需要空间细节,不需要位置信息。输入:一张猫的照片。输出:cat给每一个像素分类:这个像素是:人?车?路?天空?猫?狗?背景?模型关心每个像素的类别、物体边缘、形状、位置、多尺度信息(大物体 + 小物体都要识别)。输入:城市街景图。输出:和原图一样大的彩色掩码图,每个颜色代表一类维度图像分类语义分割输出粒度图像级别(1 个标签)像素级别(H×W 个标签)是否需要空间结构。
2026-03-16 16:48:46
451
原创 深度学习——ViT(Vision Transformer)学习(2020.10)
Vision Transformer(ViT) 是将自然语言处理领域的 Transformer 架构直接迁移到计算机视觉的开创性模型,由 Google 在 2020 年提出,论文标题为 《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》。简单来说,ViT就是把图片当成一句话,用 Transformer 做图像分类。ViT论文链接直接将图像视为序列,使用纯 Transformer 结构完成视觉任务。
2026-03-16 14:06:15
507
原创 深度学习——Transformer学习(2017.06)
Transformer 是 2017 年由 Google 团队在《Attention Is All You Need》中提出的纯注意力机制序列建模架构,彻底抛弃 RNN/LSTM 的递归结构,以多头自注意力 + 前馈网络为核心,实现全局并行计算与长距离依赖建模,是 GPT、BERT、LLaMA 等大模型的基础。序列到序列(Seq2Seq)建模框架,最初用于机器翻译,现已覆盖 NLP、CV、语音、多模态等领域。原论文链接位置编码:弥补注意力无位置感知的缺陷。
2026-03-15 17:01:03
740
原创 算法篇——动态规划【力扣Hot100】
例如,字符串 “ababcc” 能够被分为 [“abab”, “cc”],但类似 [“aba”, “bcc”] 或 [“ab”, “ab”, “cc”] 的划分是非法的。给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续 子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。给你一个非负整数数组 nums ,你最初位于数组的 第一个下标。
2025-09-09 21:55:12
1167
原创 数据结构——线性表【矩阵】
给你一个满足下述两条属性的 m x n 整数矩阵:每行中的整数从左到右按非严格递增顺序排列。给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0。这类题目侧重考察矩阵的基本遍历逻辑(行遍历、列遍历、对角线遍历等),以及简单的元素修改。
2025-09-05 21:39:08
1144
原创 算法篇——动态规划【打家劫舍&股票买卖】
买卖股票的最佳时期4:设计一个算法来计算你所能获取的最大利润。也就是说,你最多可以买 k 次,卖 k 次。买卖股票的最佳时期3:设计一个算法来计算你所能获取的最大利润。买卖股票的最佳时期2:在每一天,你可以决定是否购买和/或出售股票。买卖股票的最佳时期1:你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。买卖股票的最佳时期6:你可以无限次地完成交易,但是你每笔交易都需要付手续费。买卖股票的最佳时期5:卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。
2025-09-05 16:24:49
437
原创 数据结构——树(02二叉树,二叉树的构造与增删改查,代码练习)
展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null。如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。翻转奇数层的节点:记录每一层的层数,然后将当前层的值保存下来,重新赋值给每一个节点。给定二叉树的前序遍历(根→左→右)和中序遍历(左→根→右)序列,重建二叉树。给定中序(左→根→右)和后序(左→右→根)遍历序列,重建二叉树。按照上述的思路,重复多次就能构造出整个树了。
2025-09-02 20:47:47
879
原创 数据结构——树(03二叉树,与路径有关的问题,代码练习)
判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。返回所有从根节点到叶子节点的路径。
2025-09-02 20:47:33
695
原创 数据结构——树(04二叉树,二叉搜索树专项,代码练习)
二叉搜索树(Binary Search Tree,简称 BST)是一种特殊的二叉树,其核心特性围绕 “节点值的有序性” 展开。给定一个二叉搜索树 root 和一个目标结果 k,如果二叉搜索树中存在两个元素且它们的和等于给定的目标结果,则返回 true。给你一个 二叉搜索树 的根节点 root ,和一个由正整数组成、长度为 n 的数组 queries。给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。二叉搜索树的中序遍历是有序的,且是升序的。
2025-09-02 20:47:18
738
原创 算法篇——动态规划【基础篇】
算爬 4 阶时又要算爬 3 阶和爬 2 阶 ——爬 3 阶被重复计算了 2 次。如果 n很大,重复计算的次数会爆炸式增长,效率极低。给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。给你一个整数 n ,对于0-n的n+1个数,计算其二进制表示中 1 的个数。如果是奇数,那么二进制的个数比i-1的1多一个。如果i是偶数,二进制最后一位是0,1的个数和。如果i是奇数,二进制最后一位是1,1的个数是。如果是偶数,那么二进制的个数与i%2一样。
2025-08-31 22:50:15
109
原创 查漏补缺——与日期有关的字符串
给你一个字符串 date,它的格式为 yyyy-mm-dd,表示一个公历日期。给定一个 “YYYY-MM-DD” 格式的日期和一个整数 N,计算 N 天后的日期,同样以 “YYYY-MM-DD” 格式返回。给你一个字符串 date ,它的格式为 Day Month Year ,请你将字符串转变为 YYYY-MM-DD 的格式。给定两个 “YYYY-MM-DD” 格式的日期,计算它们之间的工作日天数(周一至周五,不含法定节假日)。给定一个 “YYYY-MM-DD” 格式的日期,将年月日分离出来。
2025-08-31 18:06:28
2352
原创 数据结构——线性表(链表,力扣中等篇,增删查改)
请你生成一个大小为 m x n 的螺旋矩阵,矩阵包含链表中的所有整数。给定循环单调非递减列表中的一个点,写一个函数向这个列表中插入一个新元素 insertVal ,使这个列表仍然是循环升序的。重点在于栈内存储的是节点,最后返回时候需要使用头插法进行连接。在两个数A和B的中间插入A和B的公约数【公约数的值可以用gcd直接求】当前值与后面值比较:若存在一个值 > 当前值,将当前值删掉。单调栈的关键是维持栈内元素的单调性。给你两个整数:m 和 n ,表示矩阵的维数。组成的序列,直到不存在这样的序列为止。
2025-08-29 20:50:54
1130
原创 数据结构——线性表(数组vector与字符串string,C++常见操作)
【代码】数据结构——线性表(数组vector与字符串string,C++常见操作)
2025-08-28 15:59:58
537
原创 数据结构——线性表(链表,力扣中等篇,技巧型)
当链表无序时,去重操作无法像有序链表那样通过简单比较相邻节点来完成,需要借助额外的数据结构来记录已出现过的值。因为链表是排序的,重复元素一定相邻,所以只需比较当前节点和下一个节点的值。思路就是创建两个临时链表,分别存储小于 x 的节点和大于或等于 x 的节点,最后将这两个链表连接起来,保持原有节点的相对顺序。思路2:先将链表连成环,再找到新的头节点位置并断开环,从而完成旋转操作。思路1:将链表分成两个小链表,然后将两个链表交换位置,重新连接即可。不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
2025-08-25 17:11:59
2324
原创 深度学习——yolo学习(2015.06)
Step1:它把图像划分成S×SS×SS×S的网格,若物体object中心落在某个网格单元内,该网格单元就负责检测这个物体,需要预测该物体的边界框位置、置信度以及所属类别等信息。在一张没有任何物体的空白图像中,所有网格单元都没有物体中心落入,则它们都不需要检测物品。在包含少量物体的图像中,只有物体中心所在的少数网格单元需要检测对应的物品,其余网格无需检测。假设图像中有 3 个物体,那么理论上只有 3 个网格会主动负责预测这些物体。7*7=49个网格最多检测49个物体。
2025-08-21 15:02:25
2928
原创 深度学习——R-CNN及其变体
特性R-CNNFast R-CNN候选框RPN(网络生成)特征提取每个 RoI 单独整图共享 CNN整图共享 CNNROI 特征Warp 到固定大小分类/回归端到端多任务端到端多任务训练三阶段端到端联合训练端到端联合训练速度很慢快更快(≈5 FPS 以上)候选区域生成(Region Proposals):找出“可能有目标”的若干候选框;分类 + 回归(Detection Head):对每个候选框判别类别并精修边界框。
2025-08-18 22:33:52
1275
原创 深度学习——常见的神经网络
在 CNN 中,经过一系列卷积和池化操作后,输出的特征图通常是具有高度、宽度和通道数的三维张量(形状如 [batch_size, height, width, channels] );其核心思想是:信息从输入层开始,经过若干个隐藏层的非线性变换,最终到达输出层,且信号只沿单向传播,不会形成循环。池化的主要作用有1、保留边缘、纹理等显著特征2、将图片的大小变小:8 * 8的图片变成了4 * 4。RNN的核心思想:网络的隐藏状态记录历史信息,每个时间步的输出依赖当前输入和之前的隐藏状态。其计算方法不展开叙述。
2025-08-17 10:45:19
1617
原创 深度学习——常见问题与优化改进
在 PyTorch 中,L1 需手动加入损失,对于加了L1正则的神经网络,大部分深度学习框架自带的优化器训练获得不了稀疏解;Dropout 随机让一部分神经元 “失效”(输出为 0),使模型无法依赖固定的神经元组合,被迫学习更广泛、更具代表性的特征。当梯度的 “大小” 超过预设阈值时,按比例缩小梯度,使其控制在合理范围内,保证参数更新的稳定性。是指模型在训练数据上都表现不好,说明模型太简单,无法捕捉数据中的规律。:训练数据中某些类别样本太少,导致模型偏向多的类别,分类效果差。决定每次更新参数的步长。
2025-08-16 17:48:07
987
原创 机器学习——线性回归
是从 “损失函数” 到 “参数梯度” 的计算过程,核心是通过求导(梯度)找到参数的优化方向,为参数更新提供依据。是从 “输入特征” 到 “输出预测值” 再到 “损失计算” 的过程,核心是利用当前参数计算模型的预测结果,并衡量预测与真实值的误差。类比蒙眼爬山时,通过脚底坡度(梯度)感受下山方向,一小步一小步(学习率)往山下走。梯度的模(长度)表示变化率的大小。输入:结构化的特征数据,通常用向量或矩阵表示。线性回归的核心是通过训练数据学习最优的。:衡量预测值与真实值的差异,输出:线性回归的输出的。
2025-08-16 14:52:18
862
原创 数据结构——线性表(链表,力扣简单篇)
需要注意的是:如果初始化dummy指向头结点,那么在第一次循环时,容易形成闭环。正常的1和2之间已经没有了联系,但是并不影响p的头插。反转2(反转部分链表):给出指针 p 以及指针 q 指向链表中的某个节点。给定两个单链表的头节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点。使用头插法将整个链表重新插入,注意保存p的下一个指针 pnext。给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。给你一个链表的头节点 head ,判断链表中是否有环。
2025-08-14 15:16:55
759
原创 数据结构——线性表(核心操作,附代码)
max_size表示顺序表的最大容量,即有有多少个元素。length表示当前元素的个数,其范围为【0,max_size】index表示数组的有效索引,其范围为【0,length-1】100int length;简单操作包括:初始化链表,判空,判满,获取长度。// 初始化顺序表// 初始为空表// 判断顺序表是否为空// 判断顺序表是否已满// 获取顺序表长度ListNode结构体定义:值val和指向下一个节点的指针nextdummy:虚拟头结点,指向开始节点简化边界情况。
2025-08-12 14:32:27
770
原创 数据结构——线性表(概念与存储结构)
描述数据元素之间的逻辑关系,与数据的存储方式无关。它是数据结构的抽象模型。尾结点的next指针原本为null,现在让他指向头结点或者开始节点。描述数据在计算机内存中的存储方式,决定了数据的物理表示和操作效率。存储结构:线性表分为顺序存储结构和链式存储结构,即顺序表与链表。通常用数组实现顺序表,并记录当前元素个数(长度)和最大容量。逻辑结构:线性表示是具有相同特性数据元素的有限序列。除了指向下一个节点以外,还增加了指向前驱节点的指针。
2025-08-12 13:06:09
765
原创 数据结构——树(01二叉树,【特性,特殊节点,特殊树】,代码练习)
除了关于二叉树的遍历以及N叉树的遍历,在以下博文中已经讲解了。下列讲解一些力扣上面关于二叉树的题目。二叉树的递归解法本质是 “分治思想”:将问题分解为左右子树的子问题,解决子问题后合并结果。因此方法1就是用递归。涉及到遍历整个树的可以使用广度优先遍历求解。
2025-08-10 22:27:07
2735
原创 数据结构——图(图的遍历)
同理可得,对于图的深度优先遍历应该先访问节点root,然后访问第1个邻接点,第2个邻接点。总的来说,图中可能有节点没访问到,或被重复访问。初始化为0,表示没有被访问过。类似,因此可以参考树的先序遍历的代码实现。但是图的遍历和树的遍历的不同点在于。
2025-08-09 10:44:05
384
原创 数据结构——图(图的概念)
无向图用普通邻接表存储时,一条边会被存两次(比如边【0,1】,会在A的邻接表存B,也会在B的邻接表存A)。树的链式存储有一种是孩子链表存储。类似于树的孩子链表存储,可以用邻接表存储图。我们希望边【0,1】和边【1,0】只用一个节点存储。有向图:无权图的表示与带权图的表示。结合邻接表和逆邻接表。
2025-08-09 10:14:29
753
原创 Flask初步学习
首先,创建一个flask项目。我选择自定义环境——现存的——conda环境——sx2025。host=‘0.0.0.0’:允许外部设备访问你的应用。如图所示:URL中输入的5会打印出来。port=5000:指定访问端口。
2025-08-08 15:20:11
303
原创 数据结构——树(树的遍历,附代码)
只有先序遍历和后序遍历。因为二叉树每个节点固定分左、右子树,能明确“左→根→右”的中序顺序;要想先访问左节点,再访问右节点。第一次访问时打印:1-2-4-5-6-3(先序遍历:根左右)第二次访问时打印:4-2-5-1-6-3(中序遍历:左根右)第三次访问时打印:4-5-2-6-3-1(后序遍历:左右根)和二叉树的遍历类似,树的遍历主要是针对多个p->child。将逆后序遍历的结果压入栈中,再取出来就可以实现后序遍历了。从上到下,从左到右:遍历结果1-2-3-4-5-6。同样,森林只有先序遍历和后序遍历。
2025-08-08 15:17:30
1092
原创 数据结构—栈(表达式的转换)
扫描到加号+:val2=先出栈的(3*(6-4)),val1=后出栈的(1*2),((1*2)+(3*(6-4)))入栈。扫描到乘号*:val2=先出栈的(6-4),val1=后出栈的3,(3*(6-4))入栈。扫描到乘号*:val2=先出栈的2,val1=后出栈的1,(1*2)入栈。扫描到减号-:val2=先出栈的4,val1=后出栈的6,(6-4)入栈。1、栈顶元素乘号出栈,并写入结果序列【1 2 * 3 6 4 - *】1、栈顶元素乘号出栈,并写入结果序列【4 6 - 3 * 2 1 *】
2025-08-08 09:45:39
1095
原创 数据结构—栈(与字符串相关的应用)
首先,我们的思路类似于题2,同样不用该考虑括号不匹配的问题,同样用num来模拟栈当前的实时深度。但是现在的问题是,我们需要将最外层的括号去掉,也就是第一个左括号和最后一个右括号。因此设计当匹配到右括号时,num–,表明当前栈的深度,类似与顺序栈中的top。如果只在左括号入栈时,进行num++,则得到的是所有左括号的数量。右括号:存在字符可以匹配,) 与( 配对成功,出栈。右括号:存在字符可以匹配,) 与{ 配对失败。右括号:存在字符可以匹配,】与【配对成功,出栈。
2025-08-08 09:45:15
899
原创 数据结构—栈与队列互相实现
原理:已知队首元素之后,我们将队首元素出队即为队列的pop操作。用输出栈来完成即将S2的栈顶元素弹出。最终结果我们发现S2的顺序与队列的入栈顺序完全一致。队首元素top为输出栈S2的栈顶元素。因此我们可以用两个栈(一个输入栈,一个输出栈)来实现队列。像左手倒腾右手一样。当S1和S2均为空时,队列为空。表示输入栈中没有元素,输出栈中也没有元素。原理:元素1入队的同时,将元素1入到输入栈中暂存。因此我们可以用两个队来实现栈。假设现在输入1、10、21。假设现在输入1、10、21。
2025-08-08 09:44:35
785
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅