- 博客(59)
- 收藏
- 关注
原创 基于 PyTorch 从零实现 Transformer 模型:从核心组件到训练推理全流程
本文围绕 Transformer 模型的实现与应用展开,从核心组件到完整流程进行了系统解析。首先介绍了 Transformer 的整体架构,包括编码器、解码器和投影层的基本构成;随后详细阐述了位置编码、多头注意力、前馈神经网络等核心组件的实现原理与代码细节,解释了各部分在模型中的具体作用;接着展示了如何将这些组件有机组合成完整的 Transformer 模型,并呈现了模型训练(采用交叉熵损失和 SGD 优化器)与推理(使用贪婪解码)的关键流程。
2025-08-07 17:03:32
1004
原创 用 PyTorch 实现全连接网络识别 MNIST 手写数字
全连接神经网络(Fully Connected Neural Network)是一种最基础的神经网络结构,其特点是每一层的每个神经元都与上一层的所有神经元相连。打个比方,就像公司里的部门架构:输入层是基层员工,隐藏层是中层管理,输出层是高层决策。基层的每个人都要向所有中层汇报,中层再向所有高层汇报,这样信息就能经过多层处理后得到最终结果。但全连接网络处理图像时有个缺点:它会把图像的二维像素矩阵转换成一维向量,这就像把一张完整的图片撕成一条线,会丢失图像的空间特征。
2025-07-23 19:11:53
598
原创 批量标准化(Batch Normalization)详解与实战:让模型训练更稳定高效
批量标准化是一种在神经网络训练过程中对每一层输入进行标准化处理的技术。在每一层的输入上执行标准化操作,然后进行缩放和平移,从而加速训练、提高模型的稳定性和泛化能力。通俗来说,批量标准化就像是给神经网络的每一层输入做 "数据预处理",让数据分布更稳定,这样网络就能更容易地学习到有用的特征。# 第一个全连接层# 批量标准化层,参数为输入特征数# 第二个全连接层self.bn2 = nn.BatchNorm1d(32) # 批量标准化层# 输出层,2个类别。
2025-07-23 18:44:45
896
原创 深度学习中的数据增强:从理论到实践
数据增强是一种简单有效的正则化方法,通过对现有数据进行合理变换,可以显著提高模型的泛化能力。在实际应用中,通常会组合多种增强方法,形成一个数据增强流水线。合理使用数据增强,可以在不增加原始数据的情况下,有效缓解过拟合问题,提高模型性能。随机旋转(RandomRotation):随机旋转图像一定角度transforms.RandomRotation(degrees=30) # 随机旋转±30度颜色抖动(ColorJitter):随机调整亮度、对比度、饱和度和色调。
2025-07-21 16:51:20
744
原创 详解 Dropout:深度学习中防止过拟合的实用技巧
Dropout 是一种在神经网络训练过程中随机 "丢弃" 部分神经元的技术。它通过在每次训练迭代中随机选择一部分神经元暂时失效,减少神经元之间的过度依赖,从而防止模型过度拟合训练数据。想象一下,这就像学生学习时故意遮盖一部分教材内容,迫使大脑不依赖特定信息,而是学习更通用的规律。Dropout 是一种简单而强大的正则化技术,通过在训练过程中随机丢弃部分神经元,有效防止神经网络过拟合。它的实现简单,计算开销小,但能显著提高模型的泛化能力。
2025-07-17 18:50:07
1164
原创 详解 L2 正则化:解决神经网络过拟合的实用技巧
过拟合指的是模型过度 "记住" 了训练数据中的细节和噪声,而不是学习数据中普遍存在的规律。训练损失持续下降,测试损失先降后升模型在训练集上准确率很高,在测试集上表现糟糕模型参数值过大,对输入数据的微小变化过于敏感L2 正则化是解决神经网络过拟合的简单而有效的方法,通过在优化器中设置 weight_decay 参数即可实现。它通过惩罚过大的权重参数,限制模型复杂度,从而提高模型的泛化能力。在实际应用中,L2 正则化通常与其他防止过拟合的方法(如 Dropout、早停等)结合使用,以获得更好的效果。
2025-07-17 18:42:43
842
原创 PyTorch优化器实战:从SGD到Adam,看这一篇就够了!
新手默认用Adam,简单高效。遇到问题再换其他,比如:训练慢 → 加Momentum稀疏数据 → AdaGrad梯度不稳定 → RMSProp希望这篇文章能帮你彻底搞懂优化器!下次遇到模型不收敛时,不妨换个优化器试试~
2025-07-16 19:40:19
633
原创 PyTorch 损失函数详解:从理论到实践
回归任务优先选择 MSELoss,存在异常值时考虑 L1Loss多分类任务使用 CrossEntropyLoss,无需手动添加 Softmax二分类任务推荐使用 BCEWithLogitsLoss,数值稳定性更好训练过程中需监控损失变化,判断模型是否收敛或过拟合合理选择损失函数并配合适当的优化器,才能充分发挥模型的学习能力。在实际应用中,可根据具体任务特点和数据分布尝试不同的损失函数,选择表现最佳的方案。y_iy_i。
2025-07-16 19:19:32
1376
原创 PyTorch 参数初始化详解:从理论到实践
参数初始化是深度学习模型训练的重要环节,合理选择初始化方法能显著提高模型性能。现代深度学习中,He 初始化配合 ReLU 激活函数是最常用的组合Xavier 初始化更适合使用 sigmoid 或 tanh 的网络避免使用固定值初始化权重偏置通常初始化为 0通过 PyTorch 提供的nn.init模块,我们可以方便地实现各种初始化方法,为模型训练打下良好基础。
2025-07-16 19:11:39
708
原创 深度学习中的激活函数:从原理到 PyTorch 实战
激活函数是神经网络不可或缺的组成部分,它们为模型提供了非线性能力,使其能够处理复杂任务。ReLU 是隐藏层的首选,简单高效输出层根据任务类型选择 Sigmoid 或 Softmax注意数值稳定性问题(PyTorch 已内部处理)掌握激活函数的特性和使用场景,能帮助我们更好地设计神经网络,提高模型性能。下一篇文章我们将探讨不同激活函数对模型训练的影响,敬请关注!
2025-07-15 19:00:10
819
原创 PyTorch 数据加载实战:从 CSV 到图像的全流程解析
读取CSV文件# 删除不需要的列(学号、姓名)df.drop(['学号', '姓名'], axis=1, inplace=True)# 提取特征和标签x = df.iloc[1:, :-1] # 从第二行开始,取除最后一列外的所有列作为特征y = df.iloc[1:, -1] # 从第二行开始,取最后一列作为标签# 转换为Tensor# 测试代码filepath = '大数据答辩成绩表.csv'print(f"数据集大小: {len(dataset)}")
2025-07-15 18:41:35
1001
原创 PyTorch 数据加载全攻略:从自定义数据集到模型训练
当我们需要处理特殊格式的数据(如自定义标注文件、特殊预处理)时,就需要自定义数据集。自定义数据集需继承自定义 Dataset:灵活处理特殊数据格式:快速包装张量数据DataLoader:高效批量加载,支持多线程和数据打乱处理图片:用(PyTorch 内置,支持按文件夹分类)处理文本:自定义 Dataset 读取文本文件并转换为张量大规模数据:结合和pin_memory(针对 GPU 加速)掌握数据加载是深度学习的基础,用好这些工具能让你的训练流程更高效、更易维护。
2025-07-14 19:42:43
993
原创 PyTorch神经网络训练全流程详解:从线性层到参数优化
通过本文,你应该已经掌握了:PyTorch中神经网络训练的核心组件线性层、损失函数和优化器的作用完整的前向传播、反向传播流程实际训练中的注意事项这些基础知识是深度学习的基石,理解它们将帮助你更好地构建和调试更复杂的神经网络模型。下一步可以尝试添加更多网络层、使用不同的激活函数,或者尝试解决实际的机器学习问题。
2025-07-11 20:00:27
506
原创 PyTorch全连接神经网络入门指南:从零开始构建你的第一个神经网络
通过本文,你已经学会了:PyTorch中全连接神经网络的基本构建方法nn.Module和nn.Linear的核心作用如何定义网络的前向传播过程基础网络的改进方向全连接网络虽然结构简单,但它是理解深度学习的基础。掌握了这些知识后,你可以继续探索更复杂的网络结构,如卷积神经网络(CNN)和循环神经网络(RNN)。
2025-07-11 19:55:52
841
原创 机器学习数据集划分全指南:train_test_split详解与实践
合理的数据集划分是机器学习工作流程中至关重要的一环。的基本用法和关键参数如何处理类别不均衡数据时间序列数据的特殊处理避免数据泄露的注意事项记住,没有放之四海而皆准的划分策略,最佳方法取决于你的具体数据和问题。在实际项目中,建议尝试不同的划分方式,选择最适合你项目需求的方法。
2025-07-11 19:32:36
588
原创 机器学习数据集加载全攻略:从本地到网络
掌握各种数据加载方法是机器学习工程师的基本功。无论是使用内置数据集快速验证算法,还是处理自定义的本地数据,Python生态都提供了强大的工具支持。在实际项目中,建议:从小数据集开始快速迭代建立规范的数据加载和处理流程记录数据来源和处理步骤考虑数据的版本管理。
2025-07-11 19:25:46
791
原创 PyTorch自动微分:从基础到实战
通过这篇文章,我们学习了PyTorch的自动微分机制,包括:如何构建计算图。如何计算标量和向量的梯度。如何控制梯度计算的上下文。如何通过梯度下降法求解函数最小值和线性回归模型的参数。自动微分是深度学习的核心技术之一,希望这篇文章能帮助你更好地理解和使用PyTorch的自动微分功能。
2025-07-10 19:37:58
627
原创 PyTorch Tensor 操作入门:转换、运算、维度变换
通过这篇文章,我们学习了 PyTorch 中 Tensor 的基本操作,包括:如何在 Tensor 和 NumPy 数组之间进行转换。如何进行基本的数学运算。如何改变 Tensor 的形状。如何对 Tensor 的维度进行变换。这些操作是深度学习的基础,希望这篇文章能帮助你更好地理解和使用 PyTorch!
2025-07-10 19:18:27
524
原创 PyTorch Tensor 的创建与操作入门
通过这篇文章,我们学习了 PyTorch 中 Tensor 的基本操作,包括:Tensor的概念。如何创建 Tensor。如何在 CPU 和 GPU 之间切换 Tensor。如何转换 Tensor 的数据类型。这些操作是深度学习的基础,希望这篇文章能帮助你更好地理解和使用 PyTorch!
2025-07-10 19:06:31
1143
原创 图像亮度调整的简单实现
图像亮度调整,顾名思义,就是改变图像中像素的明暗程度。简单来说,就是让图像整体看起来更亮或更暗。亮度增加:图像中的每个像素值都会增加一个固定值,让图像看起来更亮。亮度降低:图像中的每个像素值都会减少一个固定值,让图像看起来更暗。通过这篇文章,我们学习了两种调整图像亮度的方法:使用函数,通过加权平均的方式调整亮度。优点实现简单,代码简洁。可以通过调整权重参数灵活控制亮度变化。不容易出现像素值溢出的问题,因为权重和偏移量的计算方式较为安全。缺点需要额外的计算开销,因为涉及加权平均操作。
2025-07-10 18:41:44
630
原创 图像处理中的霍夫变换:直线检测与圆检测
霍夫变换是一种用于检测图像中特定几何形状(如直线、圆等)的方法。它的核心思想是将图像从笛卡尔坐标系转换到参数空间(霍夫空间),通过累加器投票机制来检测形状。霍夫变换是一种非常强大的图像处理技术,可以用于检测图像中的直线和圆等几何形状。通过本文的介绍和代码示例,相信你已经对霍夫变换有了更深入的理解。霍夫直线变换:适用于检测图像中的直线。统计概率霍夫直线变换:适用于检测图像中的直线,并返回直线的端点坐标。霍夫圆变换:适用于检测图像中的圆形。
2025-07-09 19:59:15
418
3
原创 图像处理中的模板匹配:原理与实现
模板匹配的基本思想是:用一个小的模板图像在目标图像中不断滑动比较,通过某种匹配方法来判断模板图像是否与目标图像的某个区域匹配。简单来说,就是在一个大图像中寻找一个小图像的位置。例如,假设我们有一张游戏界面的截图(目标图像)和一个按钮的截图(模板图像),我们可以通过模板匹配技术找到按钮在游戏界面中的位置。模板匹配是一种非常实用的图像处理技术,可以帮助我们在大图像中找到小图像的位置。通过本文的介绍和代码实现,相信你已经对模板匹配有了更深入的理解。
2025-07-09 19:35:35
843
原创 图像处理中的直方图均衡化:原理与实现
直方图均衡化是一种非常实用的图像增强技术,可以帮助我们改善图像的对比度和亮度。通过本文的介绍和代码示例,相信你已经对直方图均衡化有了更深入的理解。全局直方图均衡化:适用于整体对比度较低的图像。自适应直方图均衡化(CLAHE):适用于局部对比度较低且需要保留细节的图像。
2025-07-09 19:21:03
1087
原创 图像轮廓特征查找:外接矩形、最小外接矩形与最小外接圆
通过本文的介绍,你已经学会了如何使用 OpenCV 检测图像轮廓的外接矩形、最小外接矩形和最小外接圆。这些技术在图像处理和计算机视觉中非常实用,可以帮助我们更好地理解和分析图像中的物体特征。希望本文对你有所帮助,如果你对代码或技术有任何疑问,欢迎留言交流!
2025-07-09 18:57:37
634
原创 图像处理中的凸包检测:原理与实现
凸包可以理解为一个凸多边形,它能够包含图像中物体的所有点。想象一下,如果你有一堆钉子钉在木板上,然后用一根橡皮筋紧紧地包裹住这些钉子,那么橡皮筋形成的形状就是一个凸包。在图像中,凸包就是将物体的最外层点连接起来形成的多边形。凸包检测是一种非常实用的图像处理技术,可以帮助我们提取图像中物体的轮廓特征。通过本文的介绍和代码实现,相信你已经对凸包检测有了更深入的理解。在实际应用中,凸包检测可以用于目标识别、手势识别等领域,希望本文对你有所帮助。
2025-07-09 18:51:35
963
原创 图像轮廓检测与绘制:OpenCV 实战指南
轮廓是一系列相连的点组成的曲线,它代表了物体的基本外形。与边缘不同,轮廓是连续的,而边缘可能并不连续。轮廓主要用于分析物体的形态,例如计算物体的周长和面积等。简单来说,轮廓可以帮助我们更好地理解图像中物体的形状。本文介绍了如何使用 OpenCV 进行图像轮廓的检测和绘制。通过灰度化、二值化和轮廓检测,我们可以提取图像中物体的形状信息,并通过绘制轮廓将其可视化。希望本文对你有所帮助!如果你有任何问题或需要进一步的解释,请随时留言。
2025-07-08 18:52:09
806
原创 图像梯度处理与边缘检测:OpenCV 实战指南
卷积核是图像处理中的一个重要工具,它可以通过滑动窗口的方式对图像进行操作。通过设计不同的卷积核,我们可以实现不同的图像处理效果,例如边缘检测。以下是一个简单的例子,展示如何使用自定义卷积核来提取垂直边缘和水平边缘。本文介绍了如何使用 OpenCV 实现图像梯度处理和边缘检测。通过自定义卷积核、Sobel 算子、Laplacian 算子和 Canny 算法,我们可以有效地提取图像中的边缘信息。自定义卷积核:适用于简单的边缘检测任务。Sobel 算子:适用于检测水平和垂直边缘。Laplacian 算子。
2025-07-08 18:46:52
715
原创 图像噪点消除:用 OpenCV 实现多种滤波方法
高斯滤波:适用于高斯噪声,能够平滑图像并保留一定细节。均值滤波:适用于简单的平滑操作,但可能会丢失细节。中值滤波:适用于椒盐噪声和斑点噪声,能够很好地保留边缘信息。双边滤波:适用于需要在去除噪点的同时保留边缘信息的场景。通过本文的介绍和代码示例,你可以在自己的项目中尝试这些滤波方法,选择最适合你的需求的方法来消除图像噪点。
2025-07-08 18:43:40
696
原创 图像处理基础:镜像、缩放与矫正
镜像旋转是一种特殊的图像变换,它通过水平、垂直或水平垂直翻转来改变图像的方向。与常规的旋转不同,镜像旋转不需要指定旋转中心,而是直接围绕图像的中心进行翻转。水平翻转:将图像沿 y 轴翻转,坐标从(x, y)变为(-x, y)。垂直翻转:将图像沿 x 轴翻转,坐标从(x, y)变为(x, -y)。水平垂直翻转:同时进行水平和垂直翻转,坐标从(x, y)变为(-x, -y)。图像缩放是指改变图像的尺寸,使其变大或变小。在缩放过程中,需要通过插值算法来计算新像素的值,以保持图像的质量。最近邻插值。
2025-07-07 19:36:46
522
原创 图像处理中的边缘填充:原理与实践
本文介绍了五种常用的边缘填充方法:边界复制、边界反射、边界反射101、边界常数和边界包裹。每种方法都有其独特的应用场景和效果。在实际应用中,可以根据具体需求选择合适的填充方法。边界复制:适合需要保持边界像素值不变的场景。边界反射:适合需要镜像效果的场景。边界反射101:适合需要更自然的镜像效果的场景。边界常数:适合需要特定颜色填充的场景。边界包裹:适合需要循环效果的场景。
2025-07-07 19:31:41
1176
原创 图像处理中的插值方法:原理与实践
在图像处理中,插值算法的作用是解决图像缩放或旋转时,由于像素之间的间隔不一致而导致的信息丢失和图像质量下降的问题。当我们对图像进行缩放或旋转操作时,需要在新的像素位置上计算出对应的像素值,而插值算法的作用就是根据已知的像素值来推测未知位置的像素值。OpenCV提供了多种插值方法,每种方法都有其独特的应用场景和优缺点。以下是五种常见的插值方法的介绍和代码实现。本文介绍了五种常见的图像插值方法:最近邻插值、双线性插值、像素区域插值、双三次插值和Lanczos插值。每种方法都有其独特的应用场景和优缺点。
2025-07-07 18:46:58
937
原创 图像旋转:从原理到 OpenCV 实践
图像旋转是图像处理中的重要操作,理解其原理对于深入学习计算机视觉和图像处理至关重要。OpenCV 提供了方便的函数来实现图像旋转,同时也支持多种插值方法和边缘填充方式,我们可以根据具体需求选择合适的方法。在实际应用中,我们需要综合考虑计算速度和图像质量,选择最适合的参数。希望本文能帮助你更好地理解图像旋转的原理和实现方法,欢迎在评论区留言交流。
2025-07-04 16:11:32
1095
原创 基于 OpenCV 的图像 ROI 切割实现
通过上述的原理介绍和代码示例,我们可以看到,利用 OpenCV 和 Numpy 进行 ROI 切割是非常简单和高效的。在实际的计算机视觉应用中,ROI 切割可以帮助我们更有针对性地处理图像数据,提高程序的性能和效率。希望本文能够对大家理解和应用 ROI 切割有所帮助。以上就是关于 ROI 切割的相关内容,大家可以根据自己的需求修改代码中的图像路径和 ROI 区域的坐标,实现不同的 ROI 切割效果。
2025-07-04 16:05:26
481
原创 OpenCV 图像操作:颜色识别、替换与水印添加
通过以上代码示例,我们展示了如何使用 OpenCV 进行多种图像操作,包括图像加法、颜色加权加法、HSV 颜色空间转换、颜色范围查找、与运算生成掩膜以及添加水印等。这些操作在计算机视觉和图像处理中非常常见,希望本文能对你有所帮助。
2025-07-04 15:29:25
732
原创 OpenCV 形态学变换实战
通过本文的介绍,你学会了如何使用 OpenCV 进行常见的形态学变换操作。这些操作在图像预处理、特征提取等任务中非常有用。你可以根据自己的需求选择合适的形态学变换操作,对图像进行处理。希望本文对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言。
2025-07-03 10:38:48
463
原创 图像二值化方法及 Python OpenCV 实现
阈值法是最基本的二值化方法,它将图像中的每个像素值与一个设定的阈值进行比较,大于阈值的像素值设为 255,小于阈值的像素值设为 0。import cv2# 阈值法:跟一个值比,大于这个值就是255,小于这个值就是0本文介绍了多种图像二值化方法,并使用 Python 和 OpenCV 库实现了这些方法。不同的二值化方法适用于不同的场景,你可以根据具体需求选择合适的方法。在实际应用中,对于光照均匀的图像,简单的阈值法可能就足够了;而对于光照不均匀的图像,自适应阈值法可能会取得更好的效果。
2025-07-02 19:11:01
564
原创 图像灰度处理方法及 Python 实现
本文介绍了三种常见的图像灰度处理方法,并使用 Python 和 OpenCV 库实现了这些方法。最大值法简单直接,但可能会导致图像细节丢失;平均值法计算简单,但对三个通道的权重相同,可能无法准确反映人眼对不同颜色的感知;加权平均值法考虑了人眼对不同颜色的感知差异,能够更准确地反映人眼对图像的感知,是最常用的灰度处理方法。在实际应用中,应根据具体需求选择合适的灰度处理方法。
2025-07-02 18:58:38
432
原创 opencv基础的图像操作
通过以上示例,我们学习了 OpenCV 的基本安装方法和图像处理操作,包括图像的读取、显示、保存,以及在图像上绘制直线、矩形、圆形和添加文字。这些都是计算机视觉应用的基础,掌握它们后可以进一步探索更复杂的图像处理和分析任务。
2025-07-02 18:55:05
441
原创 深入理解无监督学习与K-means聚类算法:原理与实践
无监督学习(Unsupervised Learning)是机器学习的重要分支之一,与有监督学习不同,它不需要预先标记的训练数据。在无监督学习中,计算机仅根据样本的特征或样本间的相关性,从数据中自动发现隐藏的模式或结构。核心特点仅使用特征矩阵X,不需要标签y目标是发现数据中的内在结构和规律适用于探索性数据分析典型应用场景客户细分异常检测特征提取数据降维K-means作为最经典的聚类算法之一,因其简单高效而被广泛应用于各个领域。通过本文的介绍,我们了解了:无监督学习与聚类算法的基本概念。
2025-05-15 14:55:22
1471
原创 图像轮廓绘制:从理论到实践
轮廓是一系列相连的点组成的曲线,代表了物体的基本外形。与边缘不同,轮廓是连续的,而边缘不一定连续。边缘主要作为图像的特征使用,例如可以用边缘特征区分脸和手;而轮廓主要用于分析物体的形态。可以说,边缘包括轮廓。在 OpenCV 中,使用函数来寻找轮廓。其原理较为复杂,这里简单介绍一下。寻找轮廓需要将图像进行二值化处理,根据图像的不同选择合适的二值化方法,将图像中要绘制轮廓的部分置为白色,其余部分置为黑色。也就是说,需要对原始图像进行灰度化、二值化处理,使目标区域显示为白色,其他区域显示为黑色。
2025-04-24 17:48:12
1750
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人