自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 问答 (1)
  • 收藏
  • 关注

原创 模型保存、训练与验证

PyTorch 提供。

2025-02-15 17:05:33 609

原创 训练与优化

损失函数能够衡量神经网络输出与目标值之间的误差,同时为反向传播提供依据,计算梯度来优化网络中的参数。 计算所有预测值与真实值之间的绝对差。参数为 : 计算每个样本的预测值与真实值之间的差距的平方,参数为 。 计算实际类别分布与预测类别分布之间的差异。输入 为预测的类别得分(不是概率),维度为 ,其中 N 是样本数量,C 是类别数量,每个样本是一个未经过softmax 的类别得分。真实标签索引 维度为 ,每个标签是一个整数,表示该样本的真实类别索引。 会自动计算 input 的 softmax

2025-02-15 17:04:47 723

原创 深度学习模型构建

torch.nn是 PyTorch 提供的神经网络工具包,包含了构建神经网络所需的各种组件。nn.Module是 PyTorch 中构建神经网络的基类,所有的神经网络模型都需要继承自该类。初始化方法(__init__)中可以定义模型的各层,通常会使用如nn.Conv2dnn.Linear等层组件。需要注意,调用是必须的,它会调用父类(nn.Module)的初始化方法。前向传播方法(forward)需要重写,定义模型的前向传播过程,说明输入数据如何经过各层处理输出结果。

2025-02-15 17:04:13 960

原创 PyTorch 基础知识

Dataset类可以提供索引访问数据的能力,类似。

2025-02-15 17:03:29 895

原创 Transformer网络

(句子起始符),第二步计算 Masked Multi-Head Attention 避免未来信息泄露,第三步使用 Encoder-Decoder Attention 关注编码器输出的上下文信息,第四步送入前馈神经网络,最后送入输出层,通过线性层和Softmax预测下一个单词。Transformer能够同时处理句子中的所有单词,而不是逐个顺序处理,从而提高了计算效率和模型的表现力,不再受到单词顺序的限制,可以通过并行计算大大加速处理过程。,由于不依赖时间步,可以一次性计算所有单词的注意力,显著加快训练速度。

2025-02-11 23:27:25 657

原创 序列模型和注意力机制

例如,在翻译 “Jane visite l’Afrique en Septembre” 时,生成 “Jane” 时关注 “Jane”,生成 “visits” 时关注 “visite”。在编码部分,采用CNN提取图像特征,获取高维向量,在解码部分,采用RNN生成文本,每次输出一个单词,直到生成完整描述。例如,10秒钟的音频可能只对应19个字符的文本,但由于时间步长较长,输入序列的长度要大于输出。音位是构成语音的基本单元,如“the”包含“th”和“e”音,“quick"包含"k”、“w”、"i"等音。

2025-02-11 16:50:43 743

原创 自然语言处理与词嵌入

将句子中的每个单词转换为 one-hot 向量,用预训练的嵌入矩阵映射为词嵌入向量,计算所有单词嵌入的均值,送入softmax分类器,预测情感类别。对于一组性别相关的单词(如 “grandmother-grandfather”、“niece-nephew”),它们应该等距于所有性别中立的词(如 “babysitter”),这样可以避免性别偏见影响词的语义关系。但是这种表示方法,词汇之间没有任何联系,所有词的内积都是0,不能捕捉词语之间的语义相似性,对模型的泛化能力不强,难以预测相关词的共现关系。

2025-02-09 16:31:38 1061

原创 循环神经网络

在训练完成后,生成新的序列时,实际上是在从模型的概率分布中进行采样,每个时间步的目标是根据前一步的输出预测下一个单词。在反向传播过程中,梯度的数值增长过大,导致模型参数变得极其大,甚至出现数值溢出,出现NaN。基于字符的语言模型虽然可以处理任何未知的词汇,但训练时需要更多的计算资源,并且生成的句子往往较长,不如基于词汇的模型那样能够捕捉句子内部的长距离依赖。通过在每个时刻同时考虑正向(过去的信息)和反向(未来的信息)的输入序列,弥补了单向RNN的不足,能够对当前时刻的预测综合考虑上下文信息。

2025-02-07 22:22:52 798

原创 人脸识别和神经风格转换

人脸验证(Verification):验证输入图像是否属于某个特定身份,属于一对一问题。人脸识别(Recognition):一对多问题,从大量数据中找到匹配的人脸。在很多人脸识别应用中,系统需要通过单一样本识别某人,而非多个样本,这就属于问题。例如数据库中有4个员工的照片,系统需要通过一张员工的照片来判断一个人是否在数据库中。传统方法使用 softmax 分类器(输出5个标签),但这种方法在小规模数据集上表现不好,且随着新成员的加入,分类器需要重新训练,效率低下。

2025-01-26 11:33:54 836

原创 目标检测与语义分割

在人脸识别任务中,网络的最后一层输出不止是分类结果,还包括多个特征点(如眼角、嘴角、鼻尖等)的坐标,通过这些坐标可以进行脸部表情分析、面部关键点定位等。小步幅窗口滑动的距离较小,检测的区域较多,计算量较大。对每个对象,计算它的真实边界框与所有 Anchor Box 的交并比(IoU),将该对象分配给交并比最高的 Anchor Box 和所在的格子。是一种专门用于语义分割的神经网络架构,其目标是为输入图像中的每个像素分配一个类别标签(例如,背景、道路、猫等),从而实现高精度的像素级分类。

2025-01-24 23:05:14 1519

原创 深度卷积网络

LeNet-5是一种开创性的神经网络结构,针对手写数字识别的灰度图像,网络架构如下图所示:LeNet输入是32×32×132\times32\times132×32×1维的手写数字识别的灰度图像。卷积层1:6个5×55\times55×5卷积核,步幅1,无Padding,输出28×28×628\times28\times628×28×6。池化层1:平均池化,2×22\times22×2卷积核,步幅2,输出14×14×614\times14\time

2025-01-18 22:06:28 908

原创 卷积神经网络

每个输出单元的计算仅依赖于相关的输入区域,与不相关的输入无关,避免了全连接的冗余,防止过拟合。在更复杂的网络结构中,卷积层可以堆叠使用,以逐步提取更高级的特征。重复进行这个过程,卷积核逐步在图像上滑动,最终生成一个新的矩阵(特征图),矩阵元素的每个数值代表该区域的特征强度。每个卷积核提取图像的不同特征,使用每个卷积核的卷积结果,加上偏差并应用非线性激活函数(如ReLU),得到最终的。除了上述卷积核外,还有其他不同类型的卷积核,但这些手工设计的卷积核在特定任务上表现良好,但在复杂场景下可能存在局限性。

2025-01-09 15:49:30 842

原创 机器学习策略Ⅱ

在训练算法的时候,可以通过人工检查算法在开发集或测试集上的错误,分析错误类型,来识别值得优先解决的问题。这样子可以帮助开发者确定哪些方向有最大的性能改进空间,避免将大量时间浪费在影响较小的错误类型上。基本流程是首先从开发集或测试集中选择100个错误样本进行分析,人工标记每个错误的类型(如狗、模糊图像、大猫等),计算每种错误类型的占比来判断每种错误类型的性能改善上限。如果在100个错误样本中只有5%是狗,那么即使完全解决狗问题,错误率最多只能从10%下降到9.5%,性能改善有限。

2025-01-02 22:25:14 934

原创 机器学习策略Ⅰ

在数据较少的时候,传统经验法则是采用训练集和测试集70%、30%的比例,或者训练集、验证集、测试集60%、20%、20%的比例。之间映射的理论最优函数。在医学影像识别上,人类水平错误率可以是普通人类的表现(3%),也可以是普通医生的表现(1%),也可以是经验丰富医生的表现(0.7%),甚至可以是经验丰富的医生团队的表现(0.5%)。第一种是开发集/测试集分布与实际应用场景不匹配,比如开发集使用高质量图片,但实际应用中处理的是低质量、模糊的图片,此时需要调整开发集和测试集的分布,使其更贴近实际应用。

2024-11-30 21:53:33 779

原创 超参数调整、Batch归一化和程序框架

在深层网络中,从第三个隐藏层的视角来看,由于前一层参数的更新会改变激活值的分布,那么第三层需要不断调整,增加了学习的难度。虽然Batch归一化有正则化的副作用,但它的主要目的是加速学习,而非正则化。在深度学习中,可以对隐藏层激活值进行归一化,以提升学习效率,尤其是对深层神经网络。,每两个类别之间的分界面是线性的。因此,在测试阶段需要使用在训练过程中积累的均值和方差的估计值,而不是依赖于当前测试样本的。粗糙到精细采样法先进行粗略的超参数取样,找到表现较好的区域后,集中在该区域进行更密集的搜索。

2024-11-25 22:08:47 653

原创 深度学习优化算法

除了动量梯度下降法外,**均方根传滴(RMSProp)**也可以加速梯度下降,通过自适应调整不同方向上的学习率,避免过大的更新步长,从而加速收敛。RMSProp 的关键思想是对每个参数的梯度平方进行指数加权移动平均,用于调整学习率的分母,使学习率在陡峭方向缩小,而在平缓方向保持较大。平缓方向的梯度较小,其平方值使分母较小,从而增大该方向的更新步长,加速收敛。当样本数量较大时,mini-batch size一般取64,128,256,512这几个2的幂次方值,因为计算设备在处理这种尺寸时优化效果更好。

2024-11-21 15:36:18 946

原创 深度学习的实践层面

在训练神经网络时,超参数选择是一个高度迭代的过程。我们通常从一个初步的模型框架开始,进行编码、运行和测试,通过不断调整优化模型。数据集一般划分为三部分:训练集、验证集和测试集。常见的比例是60%用于训练,20%用于验证,20%用于测试。然而,当数据量非常大时,验证集和测试集的比例会相应减小。验证集的目的是帮助选择最优模型,而测试集用于评估最终模型的泛化能力。对于百万级数据集,验证集和测试集可以相对较小,通常验证集选取1万条数据,测试集选取1000条数据即可。

2024-11-19 23:26:41 826

原创 深度神经网络

每一层的神经元负责学习不同级别的特征,随着层数的增加,网络可以逐步从简单的局部特征(如图像中的边缘)学习到更复杂的全局特征(如面部各个部位或对象的整体结构)。深度神经网络的强大之处在于它可以从简单的特征(如边缘)开始,逐层学习到更复杂的模式。这些超参数通常是通过手动设置的,并且会影响到模型的训练效果和最终的性能,因此它们被称作超参数。当实现深度神经网络的时候,一个常用的检查代码是否有错的方法就是过一遍算法中矩阵的维数。指的是神经网络的层数。更深的网络可以捕捉到更多的层级特征,逐步构建出复杂的表示。

2024-11-14 16:21:57 1303 1

原创 浅层神经网络

浅层神经网络浅层神经网络通常指包含一个隐藏层的神经网络。这个网络由输入层、隐藏层和输出层构成:输入层:输入层负责接收网络的输入特征,通常表示为列向量 xT=[x1,x2,x3]x^T = [x_1, x_2, x_3]xT=[x1​,x2​,x3​],每个输入特征 xix_ixi​ 代表样本的一个属性。输入特征的激活值 a[0]a^{[0]}a[0] 就是输入特征向量 XXX,因此我们用 a[0]a^{[0]}a[0] 表示输入层的激活值。隐藏层:隐藏层包含若干节点(或神经元),在训练过

2024-11-12 20:28:26 1025

原创 神经网络基础知识

神经网络基础知识二分类任务(Binary Classification)在二分类问题中,目标是将输入(如图片、文本或其他数据)分为两类之一,通常使用标签0和1来表示不同的类别。以图像识别为例,假设我们需要判断一张图片中是否包含猫。我们可以将包含猫的图片标记为标签1,不包含猫的图片标记为标签0。模型的任务是学习图片的特征,以便根据这些特征准确地预测图片的类别,即是“猫”还是“非猫”。二分类模型经过训练后,可以对未见过的图片进行推断,输出0或1来表示是否检测到猫。在视觉任务中,图像通常表示为矩阵,

2024-11-08 18:09:16 963

原创 深度学习引言

神经网络的强大之处在于,只需要提供输入和输出的数据,网络通过训练可以自动学习输入与输出之间的复杂非线性关系,而无需人为地设计特征提取的规则。当训练集规模较小的时候,模型能从数据中学习到的信息有限,这时特征工程的能力以及算法的精细调整决定了模型的最终性能。相比之下,神经网络,尤其是深度神经网络,展示了随着数据量的增加和模型规模的扩大,性能可以持续提升的趋势。对于传统的机器学习算法,性能最初会随着数据量的增加而提升,但由于模型容量的限制和对手动特征工程的依赖,性能在达到一定程度后会趋于平稳,难以进一步提升。

2024-11-06 14:28:06 995 1

原创 SHELL编程

Shell 是一种用户与操作系统内核进行交互的界面。它是命令行解释器,用户通过输入命令,Shell 解释并执行这些命令,从而操作系统中的各种功能得以实现。./hello.shQ: 为什么有些命令通过无法运行,然而通过之后再./hello.sh就能运行起来呢?例如$[1+2]$。A: 在Unix/Linux系统中,当你使用/bin/shsh/bin/sh/bin/shbashbashsh/bin/sh当你通过使脚本可执行,并使用./hello.shbashbashchmod u+x假设hello.shsh。

2024-05-17 14:54:35 805

原创 力扣第130场双周赛

给定若干个点和每个点对应的标签,若一个正方形中心在原点,所有边平行于坐标轴,且正方形内不存在标签相同的两个点,则称之为合法正方形。从每个半边长不同的正方形从小到大枚举,如果这个半边长的正方形上的所有点都满足条件,则继续判断下一个正方形。平衡字符串是指字符串中所有字符串出现的次数都相同。如果这个半边长的正方形上有某个点不满足条件,则退出循环。如何快速判断一个字符串是否为平衡字符串:记字符串长度为。,那么这个字符串就是平衡字符串。,字符串中出现最多的字符数量为。,字符串中出现过的字符种类为。

2024-05-13 10:39:24 1145

原创 numpy其他函数

现在希望把之前案例中两个国家的数据方法一起来研究分析,同时保留国家的信息(每条数据的国家来源)。

2024-03-05 16:59:10 454 1

原创 numpyNaN

在一组数据中单纯的把nan替换为0并不合适。全部替换为0后,替换之前的平均值如果大于0,替换之后的均值肯定会变小,所以更一般的方式是把缺失的数值替换为均值(中值)或者是直接删除有缺失值的一行。(-inf,inf):infinity,inf表示正无穷,-inf表示负无穷。(NAN,Nan):not a number表示不是一个数字。什么时候回出现inf包括(-inf,+inf)假如在数据中遇到了nan该如何处理呢?

2024-03-05 16:57:47 834

原创 numpy数据操作

英国和美国各自youtube1000的数据结合之前的matplotlib绘制出各自的评论数量的直方图。希望了解英国的youtube中视频的评论数和喜欢数的关系,应该如何绘制改图。

2024-03-05 16:57:13 491

原创 numpy基础运算

轴(axis)在numpy中可以理解为方向, 使用0,1,2…数字表示,对于一个一维数组,只有一个0轴,对于2维数组(shape(2,2)),有0轴和1轴,对于三维数组(shape(2,2, 3)),有0,1,2轴。np.arange(0,10).reshape((2,5))的reshpe中2表示0轴长度(包含数据的条数)为2,1轴长度为5,2*5一共10个数据。shape为(3,3,3)的数组。shape为(3,3,2)的数组。shape为(3,3,2)的数组。够和(3,2)的数组进行计算。

2024-03-05 16:56:34 419

原创 matplotlib直方图

在美国2004年人口普查发现有124million的人在离家相对较远的地方工作。根据他们从家到上班地点所需要的时间, 通过抽样统计(最后一列)出了下表的数据, 这些数据能够绘制成直方图么?假设你获取了250部电影的时长(列表a中), 希望统计出这些电影时长的分布状态(比如时长为100分钟到120分钟电影的数量, 出现的频率)等信息, 你应该如何呈现这些数据?但是这些数据都是统计之后的数据, 所以为了达到直方图的效果, 需要绘制条形图。方法的是那些没有统计过的数据。

2024-03-03 22:15:36 448

原创 matplotlib条形图

假设你知道了列表a中电影分别在2017-09-14(b_14), 2017-09-15(b_15), 2017-09-16(b_16)三天的票房, 为了展示列表中电影本身的票房以及同其他电影的数据对比情况, 应该如何更加直观的呈现该数据?假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b), 那么如何更加直观的展示该数据?

2024-03-03 22:14:52 392

原创 matplotlib散点图

假设通过爬虫你获取到了北京2016年3, 10月份每天白天的最高气温(分别位于列表a, b), 那么此时如何寻找出气温和随时间(天)变化的某种规律?

2024-03-03 22:14:19 494

原创 matplotlib折线图

假设大家在30岁的时候, 根据自己的实际情况, 统计出来了你和你同桌各自从11岁到30岁每年交的女(男)朋友的数量如列表a和b, 请在一个图中绘制出该数据的折线图, 以便比较自己和同桌20年间的差异, 同时分析每年交女(男)朋友的数量走势。假设一天中每隔两个小时的气温(℃)分别是[15,13,14.5,17,20,25,26,26,27,22,18,15], 画出对应的气温折线图。如果列表a表示10点到12点的每一分钟的气温, 如何绘制折线图观察每分钟气温的变化情况?

2024-03-03 22:12:35 447

原创 Leetcode 26-30题

对于刚刚的例子,当 text[5] 与 pattern[4 + 1] 失配时,令 j = next[4] = 2,然后我们会发现 text[i] == pattern[j + 1] 能够成立,因此就让它继续匹配,直到 j == 6 也匹配成功,这就意味着 pattern 是 text 的子串。如下图所示,当已经得到 next[3] = 1 时,最长相等前后缀为 “ab”,之后计算 next[4] 时,由于 s[4] == s[next[3] + 1] (这里的为什么要用 next[3]?

2024-02-22 00:01:32 977

原创 Leetcode 21-25题

要实现上述链表的两两交换,比如要交换1和2节点,需要将head指向2,将1指向3,将2指向1,实现这三步即可。因此可以采用堆优化来查找最小值,即每次把每个链表都存一个节点到堆中,取最小值接到答案后面,是。用两个指针指向两个链表的表头,然后每次比较一下哪个值小,将较小的节点接到答案后面即可。也就是说,只有左括号数量大于右括号数量时,才可以放右括号。给定一个链表数组,每个链表均为升序排列,将所有链表合并到一个升序链表中。两两交换链表中相邻的节点,并返回交换后链表的头节点。的整数倍,最后剩余的节点保持原有顺序。

2024-02-19 20:22:48 880

原创 Leetcode 16-20题

遇到左括号则入栈,遇到右括号则判断栈顶的左括号和当前右括号是否匹配。所以只要左括号和右括号的ASCII码的差的绝对值小于等于2,则可以判断匹配。给定整数数组和目标值,返回四数之和等于目标值且不重复的所有四元组。最接近,并返回三数之和。保证恰好存在一个解。最后判断栈是否为空,若栈不为空则不匹配。和三数之和一样,只是多了一重循环而已。的字符串,返回能表示的字母组合。个结点,并且返回链表的头结点。的ASCII为123, 右括号。的ASCII为40, 右括号。的ASCII为91, 右括号。的字符串,判断是否有效。

2024-02-18 17:12:43 1037

原创 Leetcode 11-15题

若大数在小数左边,则为大数+小数,若大数在小数右边,则为大数-小数。可以直接枚举字符串的每一位,看所有字符串的这一位是否都相同,如果不同就返回当前结果,否则继续下一轮判断。有一种双指针的贪心策略:如果左边的指针所在的挡板低,就将左边的指针右移,否则将右边的指针左移。个数字表示这个位置隔板的高度,选择哪两块板子可以装最多的水,返回可以存储的最大水量。这种情况来说,第1个1和第2个1所呈现出的组合是一样的,所以对于相同的数。通常,罗马数字中小的数字在大的数字的右边,如。的表示比较显然,其余的则比较特殊。

2024-02-17 19:44:52 1011

原创 Leetcode 6-10题

从上述例子来看,0到5是一个循环,6到11是一个循环。并且只有第一行和最后一行是一个等差序列,其余都是两个等差序列交错出现,公差为。可以将整数转换为字符串,然后判断是否为回文串。给定32位有符号整数,返回翻转后的整数。​为负数时,始终只要判断是否超过下限即可。因为前面判断完正负号之后,后面的数值若为。为正数时,始终只要判断是否超过上限。​,那么只有一行,也就是原字符串。行,在按层序读取为一个新的字符串。给定整数,判断是否为回文整数。,但是这个式子不能化简,因为。如果匹配一次前面的元素,那么。

2024-02-16 10:37:58 1028

原创 Leetcode 1-5题

(假设该字符串就是回文串,因此字符串长度 = r * 2 - 1,因此规定一个字符的回文串半径为 1)对称串的长度在范围内,那么就很简单,之前已经求过了,而且最右回文串已经是最靠右的了,不能在中心不变的情况下向外扩展,因此。随后考虑边界条件,所有长度为1的字符串都是回文串,所有长度为2的字符串两个字符需要相同才是回文串。,就可以利用其对称性。在每次做完加法后,可以将结果存到新的链表节点中,最后返回头节点的下一个节点开始的链表。长度为1的字符串必然为回文串,以一个字符为中心,可以向两边扩展。

2024-02-15 17:10:31 925

原创 Codeforces Round 892 (Div. 2)

Codeforces Round 892 (Div. 2)

2023-08-16 23:31:45 232

原创 数据结构基础9:STL库

数据结构基础9:STL库

2023-02-26 15:25:09 124

原创 数据结构基础8:Hash表

数据结构基础8:Hash表

2023-02-26 15:21:48 122

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除