- 博客(36)
- 收藏
- 关注
原创 深度学习(7):损失函数
本文介绍了四种常见的损失函数及其应用场景:1. MAE(L1损失)对异常值鲁棒,适用于线性回归;2. MSE(L2损失)对较大误差惩罚更重,广泛用于神经网络;3. SmoothL1Loss结合L1/L2优点,常用于目标检测;4. 交叉熵损失(CrossEntropyLoss和BCELoss)分别适用于多分类和二分类任务。文章通过PyTorch代码示例展示了各损失函数的实现方式,并指出不同任务应选择对应的损失函数:回归任务推荐SmoothL1或MSE,多分类用CrossEntropyLoss,二分类用BCEL
2025-08-13 20:13:57
1136
原创 深度学习(6):参数初始化
本文介绍了神经网络参数初始化的几种方法:1)常数初始化会导致对称性问题;2)随机初始化通过均匀/正态分布采样避免对称性;3)Xavier初始化根据输入输出神经元数量平衡方差,适合Sigmoid/Tanh函数;4)He初始化专为ReLU设计,适用于深层网络。每种方法都通过PyTorch代码示例演示了实现方式,并分析了适用场景。这些初始化策略通过控制参数分布,有助于避免训练初期的梯度消失或爆炸问题。
2025-08-13 19:57:07
411
原创 深度学习(5):激活函数
激活函数为神经网络引入非线性,增强其表达能力。常见激活函数包括:1)Sigmoid:输出(0,1),适合概率场景但易梯度消失;2)Tanh:输出(-1,1),零中心化但仍有梯度问题;3)ReLU:计算简单,缓解梯度消失但易神经元死亡;4)LeakyReLU:改进ReLU,避免神经元死亡;5)Softmax:多分类输出层,转化为概率分布但计算开销大。选择建议:隐藏层优先ReLU,输出层按任务选择Sigmoid(二分类)或Softmax(多分类)。
2025-08-13 19:39:12
882
原创 深度学习(4):数据加载器
本文介绍了PyTorch中数据加载的几种方法:1)自定义Dataset类需要实现__init__、__len__和__getitem__三个方法;2)使用DataLoader进行批量加载,可设置batch_size和shuffle参数;3)TensorDataset可直接封装张量数据;4)ImageFolder可加载图片数据集并进行预处理;5)内置datasets模块可直接加载MNIST等标准数据集。这些方法为深度学习模型训练提供了灵活的数据加载方案,支持自定义数据处理和批量加载功能。
2025-08-13 19:07:01
233
原创 深度学习(3):全连接神经网络构建
本文介绍了前馈神经网络(FNN)和全连接神经网络(FCNN)的基本概念及其在PyTorch中的实现方法。主要内容包括:1)通过继承nn.Module类构建自定义神经网络;2)使用nn.Linear创建单层网络或用nn.Sequential构建多层网络;3)完整的训练流程示例,包含损失函数(MSELoss)、优化器(SGD)的使用,以及前向传播、反向传播的实现。文章提供了详细的代码示例,展示了如何从网络构建到训练过程的具体实现,适用于图像分类等任务。
2025-08-13 18:37:46
375
原创 卷积神经网络(CNN):卷积和池化
卷积神经网络(CNN)是处理图像数据的深度学习模型,主要由卷积层、池化层和全连接层构成。卷积层通过卷积核自动提取图像特征,池化层通过下采样降低计算量,全连接层则输出最终结果。文章详细介绍了CNN的核心组件:卷积层使用不同大小的卷积核进行特征提取,池化层包括最大池化和平均池化两种方法,并提供了PyTorch实现代码。最后展示了一个自定义CNN模型示例,包含卷积、池化和全连接层的组合应用。CNN在计算机视觉等领域具有重要作用,能够有效处理高维图像数据并保留关键特征。
2025-08-13 17:19:39
1177
原创 深度学习(2):自动微分
本文介绍了PyTorch中的自动微分模块torch.autograd,这是实现神经网络训练的核心模块。主要内容包括:1) requires_grad属性控制是否计算梯度;2) 通过动态计算图跟踪张量操作;3) 使用backward()进行反向传播;4) 梯度计算和清零方法;5) 梯度下降优化示例;6) 线性回归模型参数求解流程。重点讲解了如何利用自动微分实现参数更新,包括梯度计算、反向传播和参数优化等关键步骤,展示了PyTorch在深度学习训练中的自动求导机制。
2025-08-07 19:59:45
961
原创 深度学习(1):pytorch
本文介绍了PyTorch深度学习框架的基本概念和核心功能。主要内容包括:1)PyTorch的特点和优势;2)张量的创建方式(torch.tensor和torch.Tensor的区别);3)随机数生成方法;4)设备切换(CPU/GPU);5)张量与NumPy数组的转换;6)常见张量操作(数学运算、矩阵运算、形状变换、维度操作等)。文章详细讲解了各种操作的语法和使用场景,强调了PyTorch的灵活性、高效性和易用性,特别适合深度学习模型的开发和训练。
2025-08-07 19:14:18
1088
原创 机器学习(13):逻辑回归
摘要:逻辑回归通过sigmoid函数将线性回归的连续输出映射为[0,1]区间的概率值。文中演示了sigmoid函数可视化,并展示了泰坦尼克数据集(包含pclass、age、sex特征)和鸢尾花数据集的逻辑回归实现。通过特征处理(缺失值填充、标准化、独热编码)、模型训练及评估,验证了逻辑回归在分类任务中的有效性。代码示例包含数据预处理、模型训练、预测输出(类别及概率)以及模型参数(系数和截距)的获取过程。
2025-08-04 21:38:56
287
原创 机器学习(12):拉索回归Lasso
摘要:拉索回归(Lasso)是一种带L1正则化的线性回归方法,能够自动进行特征选择,将不重要特征的系数压缩为零。它适用于高维数据(特征数>样本数)和特征相关的情况,能产生更简洁的模型。通过sklearn的Lasso()实现,关键参数包括控制正则化强度的alpha(值越大特征选择越强)和max_iter等。示例代码展示了在加州房价数据集上的应用:先标准化数据,再训练模型,最后评估MSE损失。结果显示,调节alpha值会影响特征选择程度,模型输出包括特征权重(w)和截距项(b)。
2025-08-04 21:25:55
632
原创 机器学习(11):岭回归Ridge
岭回归是一种带L2正则化的线性回归方法,通过添加权重平方和项(λ∑w_j²)来惩罚模型复杂度,防止过拟合。其特点包括:保留所有特征但缩小权重系数、适用于多重共线性数据、产生更平滑的模型。在sklearn中可通过Ridge类实现,关键参数包括正则化力度alpha、是否标准化normalize、优化器solver等。相较于SGDRegressor,Ridge专门针对L2正则化优化,更推荐用于岭回归任务。示例代码展示了使用加州房价数据进行岭回归建模的完整流程,包括数据标准化、模型训练和评估。
2025-08-04 21:19:32
291
原创 机器学习(10):欠拟合过拟合正则化
机器学习模型存在欠拟合和过拟合问题。欠拟合指模型过于简单,无法捕捉数据模式,导致训练和测试误差都较高;过拟合则是模型过于复杂,过度学习训练数据中的噪声,表现为训练误差低但测试误差高。正则化技术通过给损失函数添加惩罚项来限制模型参数大小,在保持一定正确率的同时增强模型泛化能力。其本质是平衡模型容错性和准确性,使参数既不过大(放大误差)也不过小(失去意义),从而提高模型的鲁棒性。
2025-08-04 21:14:09
286
原创 机器学习(9):梯度下降
梯度下降算法原理与实现 梯度下降是优化机器学习模型的核心方法。其基本步骤包括:1)随机初始化权重参数;2)计算损失函数梯度;3)沿负梯度方向更新参数;4)通过损失变化或固定迭代次数判断收敛。学习率控制更新步长,常设置为0.1-0.0001,可采用动态调整策略。 实现分为单变量和多变量场景:单变量通过导数直接更新参数;多变量采用偏导思想,分别优化各参数。三种主要变体为:批量梯度下降(BGD,全数据计算)、随机梯度下降(SGD,单样本更新)和小批量梯度下降(MBGD,折中方案)。实际应用中,MBGD平衡效率与稳
2025-08-04 21:06:58
813
原创 机器学习(8):线性回归
本文介绍了线性回归的基本概念及应用。主要内容包括:1)回归分析的定义,区分标称型和连续性数据;2)线性回归原理及示例说明,通过拟合直线描述变量间关系;3)损失函数和均方差的概念;4)多参数回归中权重计算的方法;5)最小二乘法的应用;6)Python中sklearn库的LinearRegression API使用示例,包括参数设置、模型训练和预测实现。文章通过植物生长高度预测的实例,展示了如何利用线性回归建立数学模型解决实际问题。
2025-08-04 19:59:55
925
原创 机器学习(7):随机森林
随机森林是一种集成学习方法,通过构建多个决策树(基学习器)进行预测,每棵树基于不同的数据子集和特征子集训练。该方法能有效提高预测精度,降低过拟合风险,适用于高维和大规模数据集。随机性体现在样本随机抽样和特征随机选择上。使用投票或平均机制整合多个决策树的结果。在Scikit-learn中,RandomForestClassifier可设置树的数量、划分标准(基尼系数或信息增益)和最大深度等参数。实验表明,该方法在Iris数据集上表现优异,准确率可达100%。
2025-08-04 19:02:47
357
原创 机器学习(6):决策树-分类
本文介绍了决策树的基本概念和应用。决策树由决策节点和叶子节点组成,具有层次结构,其深度影响模型性能。文章分析了决策树的优缺点:优点是可视化强、解释性好、计算要求低;缺点是容易过拟合。重点阐述了两种构建方法:基于信息增益的方法通过计算信息熵选择最优划分属性;基于基尼指数的方法通过评估数据集纯度进行划分。文中提供了Python代码示例,展示如何使用sklearn库构建决策树模型,并通过export_graphviz实现可视化。两种方法分别适用于不同场景,信息增益法倾向于选择多值属性,而基尼指数法能有效降低数据不
2025-08-01 19:34:37
1098
原创 机器学习(5):朴素贝叶斯分类算法
摘要:贝叶斯分类的核心思想是基于概率进行类别预测。通过先验概率(P(A))和后验概率(P(A|B))的调整,结合可能性函数,实现更准确的分类。本文演示了使用多项式朴素贝叶斯(MultinomialNB)对鸢尾花和葡萄酒数据集进行分类,分别获得66.7%和91.1%的测试准确率。代码展示了数据加载、模型训练、评估和新样本预测的完整流程,验证了贝叶斯方法在实际分类任务中的有效性。两个案例中,模型都成功对新样本做出了类别预测。
2025-08-01 19:00:29
245
原创 机器学习(4):模型选择和调优
本文介绍了三种常用的交叉验证方法和超参数搜索技术。1)保留交叉验证(HoldOut)将数据集按7:3划分为训练集和验证集,简单但可能丢失数据信息;2)K折交叉验证将数据均分为K份,轮流用1份验证,其余训练,重复K次取平均结果;3)分层K折交叉验证保持各类别比例,结果更可靠。超参数搜索通过网格搜索(GridSearchCV)自动寻找最优参数组合,可评估不同参数的性能差异。文中给出了sklearn库的实现代码示例,包括数据划分、模型训练和参数优化过程。这些方法能有效提高模型的泛化能力和参数选择的科学性。
2025-08-01 17:13:12
846
原创 机器学习(3):KNN算法-分类
KNN算法是一种基于近邻样本的分类方法,通过计算测试样本与训练样本的距离(如欧式距离、余弦距离等)进行分类。文中演示了使用红酒数据集进行KNN模型训练、标准化处理和模型保存的过程,并提供了加载模型进行预测的示例。KNN的缺点包括计算量大、高维数据效果差、需要调参等。sklearn的KNeighborsClassifier类提供了n_neighbors等参数控制算法,包含fit和predict等核心方法。文章涵盖了KNN的基本原理、实现流程和API使用说明。
2025-08-01 16:43:42
362
原创 机器学习(2):特征工程
特征工程是机器学习中的重要预处理步骤,主要包括特征提取、无量纲化和降维三个核心环节。特征提取涉及字典特征提取和文本特征提取(词频/TF-IDF);无量纲化通过归一化(MinMaxScaler)和标准化(StandardScaler)消除量纲影响;降维则采用低方差过滤和主成分分析(PCA)减少特征维度。常用API包括DictVectorizer、CountVectorizer、TfidfVectorizer等工具,配合Scikit-learn库实现数据转换。该过程能有效提升模型性能,尤其适用于高维数据(如加州
2025-07-31 19:15:43
223
原创 机器学习(1):数据集
本文介绍了sklearn中四种数据集的加载和划分方法。1)加载本地数据集(如糖尿病、乳腺癌数据集);2)加载联网数据集(如20个类别的新闻数据);3)加载自定义数据集(如CSV文件);4)数据集划分方法,包括手动划分和使用train_test_split函数自动划分(如鸢尾花、加州房价数据集)。重点说明了数据集划分的必要性(训练模型与测试模型)和划分参数(shuffle、test_size等)的使用方法。
2025-07-31 18:58:35
297
原创 opencv-python(5)
本文介绍了OpenCV中常用的图像处理技术,主要包括:1)轮廓特征提取方法(外接矩形、最小外接矩形/圆);2)直方图均衡化及自适应均衡化;3)模板匹配原理与实现;4)霍夫变换检测直线/圆;5)图像亮度调整方法;6)形态学操作(腐蚀/膨胀/开闭运算等)。每种方法都配合代码示例演示其应用效果,涵盖了图像分析、特征提取、图像增强等关键处理技术。这些基础方法为计算机视觉任务提供了重要的预处理手段。
2025-07-29 18:04:52
936
原创 opencv-python(4)
本文介绍了使用OpenCV进行图像边缘检测和轮廓处理的方法。主要内容包括:1. 使用filter2D函数进行图像卷积操作,通过自定义核实现边缘检测;2. Sobel、Prewitt、Scharr和Laplacian等边缘检测算子;3. Canny边缘检测的完整流程(高斯滤波、梯度计算、非极大值抑制和双阈值筛选);4. 轮廓查找(findContours)和绘制(drawContours)方法,包括不同检索模式和表示方法;5. 凸包检测(convexHull)和绘制(polylines)技术。文中提供了完整的
2025-07-25 19:50:26
790
原创 opencv-python(3)
本文介绍了OpenCV中的多种图像处理技术:1. 插值与边缘填充:详细讲解了图像缩放旋转时的插值方法(近邻、双线性、双三次等)和边缘填充策略(黑色填充、边界反射等);2. 透视变换:通过透视变换实现图像矫正,改变观察视角消除透视畸变;3. 图像掩膜:使用HSV颜色空间创建掩膜进行目标区域提取;4. 颜色替换:基于掩膜实现特定颜色区域的替换;5. 水印添加:通过图像融合技术将logo叠加到背景图上;6. 噪声消除:比较了均值滤波、高斯滤波、中值滤波和双边滤波等去噪方法的适用场景,其中高斯滤波适合一般情况,中值
2025-07-24 20:17:19
745
原创 opencv-python(2)
本文介绍了图像预处理中的多种操作技术。主要内容包括:1)颜色处理(加法运算、加权融合和颜色空间转换);2)灰度化方法(最大值法、均值法和加权法);3)二值化技术(多种阈值处理方法);4)几何变换(镜像翻转和仿射变换,包括旋转、平移和缩放)。所有操作均基于OpenCV库实现,通过代码示例展示了各种处理效果,并配有相应的输出图像说明。这些预处理技术为后续图像分析任务奠定了基础。
2025-07-23 20:03:42
321
原创 opencv-python(1)
本文介绍了OpenCV和NumPy在图像处理中的基本操作。主要内容包括:1)图像读取、显示和保存;2)使用NumPy创建黑白图像和随机图像;3)调整图像大小;4)图像切片操作;5)在图像上绘制图形(直线、矩形、圆);6)视频读取和处理。文中提供了Python代码示例,展示了如何通过OpenCV实现各种图像处理功能,包括基本I/O操作、图像创建、尺寸调整、区域截取、图形绘制以及视频帧处理等基础操作技术。
2025-07-22 19:06:32
200
原创 python基础(10)
Python模块化编程总结 本文介绍了Python模块化编程的基本概念和使用方法。模块是Python代码组织的基本单位,可通过import语句导入。模块分为三类:系统模块(如math、os、random等)、第三方模块(如numpy、pandas等)和自定义模块。重点讲解了random、time、os等常用系统模块的功能和用法,以及如何通过pip管理第三方模块。此外,还介绍了包的概念,包是通过包含__init__.py文件的目录组织的模块集合,用于更复杂的项目结构管理。init.py文件在包初始化、控制导入
2025-07-20 16:08:01
778
原创 python基础(9)
本文对比了迭代器和生成器的特点与实现方式。迭代器通过__iter__()和__next__()方法实现惰性数据访问,适用于自定义遍历逻辑的场景,如处理车牌数据时会逐步加载文件而非一次性读取。生成器则通过yield简化实现,自动支持迭代协议,典型应用包括逐行读取大文件或持续生成监控画面。两者核心区别在于:迭代器需手动实现协议且代码复杂但可重用,生成器编写简单但功能单一。选择时应根据具体需求权衡内存效率与开发复杂度。
2025-07-17 19:30:05
204
原创 python基础(8)
本文介绍了类和对象的基本概念及其常见属性和方法分类。类作为对象的模板,定义了属性和方法;对象是类的实例。主要内容包括:1)类属性(属于类本身,所有实例共享);2)类方法(使用@classmethod装饰器,主要用于操作类属性);3)静态方法(使用@staticmethod装饰器,不依赖实例);4)构造方法__new__()(负责对象创建)。通过Dog、Human等示例代码展示了各类属性和方法的具体应用场景和使用方式,帮助理解面向对象编程中类和对象的核心概念。
2025-07-16 19:38:15
187
原创 python基础(7)
摘要: 本文介绍了Python中的递归函数和装饰器函数。递归函数通过自身调用来解决子问题,需包含终止条件和递归调用两部分,并以阶乘和斐波那契数列为例演示实现。装饰器则在不修改原函数代码的前提下扩展功能,涵盖基本装饰器、带参装饰器和链式装饰器三种形式,可应用于日志记录、性能监控等场景。文中通过具体代码示例展示了装饰器的参数处理、重复执行及多重装饰等特性,体现了Python在函数式编程方面的灵活性和强大功能。
2025-07-15 19:37:10
309
原创 python基础(6)
Python中的变量作用域遵循LEGB规则(Local, Enclosing, Global, Built-in),依次搜索变量的定义位置。当一个函数嵌套在另一个函数内部时,外层函数的变量属于Enclosing作用域。指外层函数中的变量,在内层函数中可访问,但不可修改。用接受的函数来筛选出可迭代对象中满足条件的元素。:可选参数,用于指定排序的依据,通常是一个函数。将接受的函数应用到可迭代对象的每个元素上。仅在函数内部有效,函数外部无法访问。接受一个函数和一个可迭代对象。接受一个函数和一个可迭代对象。
2025-07-15 17:06:48
284
原创 python基础(5)
本文介绍了Python函数参数传递的多种方式:1. 位置传参与关键词传参的区别与用法,包括参数默认值设置;2. 可变参数处理(*args收集位置参数为元组,**kwargs收集关键词参数为字典);3. 参数解包操作(*用于位置参数,**用于关键词参数);4. 参数传递的两种类型:不可变类型(值传递)如int、str等,函数内修改不影响外部变量;可变类型(引用传递)如list、dict等,函数内修改会影响外部变量。文章通过CNN特征图计算等实例展示了这些参数传递机制的实际应用。
2025-07-14 18:47:58
254
原创 python基础(4)
本文展示了Python五个常用内置函数的自定义实现方法:1. maxfn()通过类型检查和数值比较实现最大值查找;2. abs()通过条件判断实现绝对值计算;3. all()和any()分别实现全真/存在真值的判断;4. len()通过迭代计数实现长度计算;5. zip()通过枚举实现多序列元素配对。每个函数都包含类型检查机制,确保输入合法性,并尽可能复现原函数功能。这些实现演示了Python基础函数的底层逻辑,有助于理解内置函数的工作原理。
2025-07-14 17:04:26
237
原创 python基础(3)
本文系统介绍了Python中的数据类型与操作。主要内容包括:1.可变与不可变类型对比,数字、字符串等不可变类型修改会创建新对象,而列表、字典等可变类型可原地修改;2.类型判断方法(type和isinstance);3.浅拷贝与深拷贝的区别,浅拷贝嵌套共享而深拷贝完全独立;4.列表、字典和集合的推导式用法;5.条件语句、循环语句(包括for和while)及循环控制(break/continue);6.异常处理机制(try-except-finally)和with语句的文件操作。文章通过代码示例详细演示了各类语
2025-07-11 18:29:36
358
原创 python基础(2)
本文介绍了Python中四种主要的数据结构:列表、元组、字典和集合。列表用[]表示,是有序可变容器;元组用()表示,是不可变有序序列;字典用{}表示,存储键值对映射;集合分为可变的set和不可变的frozenset。文章详细说明了每种结构的定义方式、特性、基本操作(如索引、切片、增删改查等)以及常用方法(如min/max、append/extend等)。其中特别强调了列表的可变性与元组的不可变性,字典的键值对特性,以及集合的唯一性和数学运算功能。这些数据结构各有特点,适用于不同的编程场景。
2025-07-10 11:42:58
290
原创 Python基础(1)
本文摘要: 本文主要介绍了conda环境管理、字符串操作、数字类型和复合类型的使用方法。conda部分包括环境创建、切换、查看和删除等操作;字符串部分详细讲解了大小写转换、填充、分割等处理方法;数字类型部分涵盖整数、浮点数、复数及类型转换;复合类型介绍了列表、元组和字典的基本操作,包括索引、切片和常用方法。文章还包含了字符串格式化输出、回文判断等实用练习,适合初学者快速掌握Python基础操作。
2025-07-08 18:42:02
225
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅