
Python深度学习 基于Pytorch
文章平均质量分 75
钢铁男儿
敲代码路上,一步一个脚印!可关注"知识代码AI"!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深度学习优化器详解:从SGD到Adam,如何选择合适的优化算法?
优化器适用场景优点缺点SGD简单任务、调试简洁直观收敛慢、调参难通用任务易收敛、稳定性好需手动调参NAG高维非凸问题更快更稳实现略复杂AdaGrad稀疏数据、NLP自适应学习率后期更新慢RMSPropRNN、图像生成适应性强超参数敏感Adam大多数任务收敛快、适应性强后期可能不稳定优化器是深度学习训练过程中的“方向盘”,它的选择直接影响模型的收敛速度和最终性能。理解不同优化器背后的数学原理和应用场景,是每一位深度学习工程师和研究者必备的技能。原创 2025-08-29 08:34:59 · 523 阅读 · 0 评论 -
PyTorch 机器学习基础(选择合适优化器)
优化器在机器学习、深度学习中往往起着举足轻重的作用,同一个模型,因选择不同的优化器,性能有可能相差很大,甚至导致一些模型无法训练。所以,了解各种优化器的基本原理非常必要。本节将重点介绍各种优化器或算法的主要原理,及各自的优点或不足。原创 2025-08-29 08:34:26 · 674 阅读 · 0 评论 -
【深度学习基础】如何选择合适的激活函数与损失函数?
场景激活函数损失函数浅层网络根据任务选择深层网络ReLU或其变体分类任务用CrossEntropyLoss,回归任务用MSE输出层为分类Softmax输出层为实数无或线性MSE二分类任务SigmoidBCELoss 或 CrossEntropyLoss激活函数与损失函数是神经网络的“灵魂”和“指南针”。它们的选择不仅影响模型的表现,更是深度学习实践中的关键决策点。希望本文能帮助你更好地理解它们的作用与选择方法,在构建模型时更加得心应手!原创 2025-08-28 08:36:01 · 401 阅读 · 0 评论 -
PyTorch 机器学习基础(选择合适激活函数)
激活函数在神经网络中作用有很多,主要作用是给神经网络提供非线性建模能力。如果没有激活函数,那么再多层的神经网络也只能处理线性可分问题。常用的激活函数有sigmoid、tanh、relu、softmax等。它们的图形、表达式、导数等信息如表5-2所示。在搭建神经网络时,如何选择激活函数?如果搭建的神经网络层数不多,选择sigmoid、tanh、relu、softmax都可以;而如果搭建的网络层次较多,那就需要小心,选择不当就可导致梯度消失问题。原创 2025-08-28 08:35:29 · 652 阅读 · 0 评论 -
过拟合与欠拟合:深度学习模型优化的关键
定义:模型在训练集上表现良好,但在测试集(或新数据)上性能显著下降。训练损失持续下降,但验证损失在某个节点后不再下降,甚至开始上升。模型“死记硬背”了训练数据中的噪声和细节,缺乏泛化能力。在图像分类任务中,可能出现对训练集中特定背景、光照等无关特征的过度依赖。权衡模型复杂度:模型不宜过于简单或复杂,应与任务难度匹配。合理使用正则化:L2、Dropout、BN等手段应结合使用,提升泛化能力。优化初始化与学习策略:良好的初始化 + 合理的学习率调度 = 更快更稳的收敛。原创 2025-08-27 08:33:39 · 314 阅读 · 0 评论 -
PyTorch 机器学习基础(过拟合与欠拟合)
前面已经介绍了机器学习的一般流程,即模型确定后,开始训练模型,然后对模型进行评估和优化,这个过程往往是循环往复的。在训练模型过程中,经常会出现刚开始训练时,训练和测试精度不高(或损失值较大),然后通过增加迭代次数或通过优化,训练精度和测试精度继续提升,如果出现这种情况,当然最好。但随着我们训练迭代次数的增加或不断优化,也有可能会出现训练精度或损失值继续改善,但测试精度或损失值不降反升的情况,如图5-4所示。出现这种情况,说明我们的优化过头了,把训练数据中一些无关紧要甚至错误的模式。原创 2025-08-27 08:31:37 · 273 阅读 · 0 评论 -
机器学习全流程拆解 _ 从数据到模型的科学之道
—— 避开80%项目失败的隐形成本,掌握高效建模方法论*原创 2025-08-26 08:32:09 · 230 阅读 · 0 评论 -
PyTorch 机器学习基础(机器学习一般流程)
机器学习一般需要先定义问题、收集数据、探索数据、预处理数据,对数据处理后,接下来开始训练模型、评估模型,然后优化模型等步骤,图5-3为机器学习一般流程图。通过这个图形可直观地了解机器学习的一般步骤或整体框架,接下来就对各部分分别加以说明。原创 2025-08-26 08:31:36 · 345 阅读 · 0 评论 -
机器学习的四大基本任务:从监督学习到强化学习的全面解析
机器学习的四大任务——监督、无监督、半监督和强化学习,构成了现代人工智能技术的基石。它们各具特色,适用于不同的问题场景,也正在不断融合创新。未来,随着多模态数据(文本、图像、语音、视频)的爆炸式增长,单一学习方式已难以满足复杂任务的需求。如何将多种学习策略有机结合、构建通用人工智能(AGI),将成为学术界和产业界共同探索的方向。如果你正准备踏入机器学习的世界,不妨从这四种基本任务入手,建立系统的认知框架,为深入学习打下坚实基础。原创 2025-08-25 08:32:26 · 783 阅读 · 0 评论 -
PyTorch 机器学习基础(机器学习的基本任务)
机器学习的基本任务一般分为4大类:监督学习、无监督学习、半监督学习和强化学习。监督学习和无监督学习比较普遍,读者也比较熟悉。常见的分类和回归等属于监督学习,聚类和降维等属于无监督学习。半监督学习和强化学习的发展历史虽然没有前两者这么悠久,但发展势头非常迅猛。图5-1说明了4种分类的主要内容。原创 2025-08-25 08:31:54 · 381 阅读 · 0 评论 -
使用 TensorBoardX 实现 PyTorch 神经网络可视化:从入门到进阶
支持丰富的可视化类型:scalar(标量)、image(图像)、histogram(直方图)、audio(音频)、text(文本)、graph(计算图)、embedding(嵌入向量)、pr_curve(PR曲线)等。与 TensorBoard 完美兼容:可以无缝使用 TensorBoard 的 Web 界面进行数据展示。简单易用的接口设计:通过类即可实现数据写入与可视化。TensorBoardX 作为 PyTorch 的可视化利器,极大地提升了模型开发和调试的效率。原创 2025-08-21 23:00:53 · 659 阅读 · 0 评论 -
PyTorch数据处理工具箱(可视化工具)
tensorboardX功能很强大,支持scalar、image、figure、histogram、audio、text、graph、onnx_graph、embedding、pr_curve and videosummaries等可视化方式。安装也比较方便,先安装tensorflow(CPU或GPU版),然后安装tensorboardX,在命令行运行以下命令即可。使用tensorboardX的一般步骤如下所示。原创 2025-08-21 23:00:19 · 878 阅读 · 0 评论 -
PyTorch Vision 系列:高效数据处理的利器
models:提供预训练的经典模型(如 ResNet、VGG、AlexNet 等)。datasets:集成常用图像数据集(如 CIFAR、MNIST、ImageNet)并支持自定义数据集加载。transforms:用于图像预处理与数据增强,如裁剪、归一化、翻转等。utils:包含图像可视化、保存等实用函数。本文将重点介绍transforms与的使用技巧,帮助你快速构建高效的数据流水线。当图像按照类别分文件夹存放时,能自动识别类别并构建标签映射。这是处理自定义图像数据集的高效方式。模块。原创 2025-08-21 08:31:44 · 416 阅读 · 0 评论 -
PyTorch数据处理工具箱(torchvision简介)
torchvision有4个功能模块:model、datasets、transforms和utils。其中model在后续章节中将介绍,利用datasets可以下载一些经典数据集,3.2节中有实例,读者可以参考一下。本节主要介绍如何使用datasets的ImageFolder处理自定义数据集,以及如何使用transforms对源数据进行预处理、增强等。下面将重点介绍transforms及ImageFolder。原创 2025-08-21 08:31:13 · 359 阅读 · 0 评论 -
PyTorch数据加载利器:torch.utils.data 详解与实践
我们以一个简单的二维向量数据集为例,展示如何构建一个自定义Dataset并使用DataLoader进行批量读取。# 假设数据为二维向量,标签为整数类别# 将 numpy 转换为 tensorDataset是数据读取的核心,负责定义单个样本的获取方式;DataLoader是数据训练的加速器,负责将数据分批、打乱、并行加载;在实际项目中,应根据数据存储结构选择合适的类,如适用于多目录图像数据;合理配置DataLoader的参数(如和pin_memory)可显著提高训练效率;自定义。原创 2025-08-19 22:59:07 · 708 阅读 · 0 评论 -
PyTorch数据处理工具箱(utils.data简介)
该类继承基类Dataset,自定义一个数据集及对应标签。class TestDataset(data.Dataset):#继承Datasetself.Data=np.asarray([[1,2],[3,4],[2,1],[3,4],[4,5]])#一些由2维向量表示的数据集self.Label=np.asarray([0,1,0,1,2])#这是数据集对应的标签#把numpy转换为Tensor。原创 2025-08-19 22:58:30 · 432 阅读 · 0 评论 -
PyTorch神经网络工具箱(优化器)
PyTorch常用的优化方法都封装在torch.optim里面,其设计很灵活,可以扩展为自定义的优化方法。所有的优化方法都是继承了基类optim.Optimizer,并实现了自己的优化步骤。最常用的优化算法就是梯度下降法及其各种变种,后续章节我们将介绍各种算法的原理,这类优化算法通过使用参数的梯度值更新参数。3.2节使用的随机梯度下降法(SGD)就是最普通的优化器,一般SGD并说没有加速效果,3.2节使用的SGD包含动量参数Momentum,它是SGD的改良版。原创 2025-08-18 23:21:01 · 322 阅读 · 0 评论 -
PyTorch数据处理工具箱详解|深入理解torchvision与torch.utils.data
PyTorch 的数据处理工具体系结构清晰、模块化强,为图像深度学习提供了强大的支持。torch.utils.data 是构建数据流的基础模块;torchvision 是视觉任务的“瑞士军刀”,提供数据集、模型、变换和图像操作等多种功能;合理使用这些工具,可以显著提升开发效率与模型性能。掌握这些工具不仅是构建项目的基础,更是深入理解 PyTorch 生态的重要一步。希望本文能帮助你更好地理解和应用 PyTorch 的数据处理机制。原创 2025-08-18 23:18:11 · 766 阅读 · 0 评论 -
PyTorch数据处理工具箱(数据处理工具箱概述)
1)datasets:提供常用的数据集加载,设计上都是继承自torch.utils.data.Dataset,主要。3)transforms:常用的数据预处理操作,主要包括对Tensor及PIL Image对象的操作。4)utils:含两个函数,一个是make_grid,它能将多张图片拼接在一个网格中;2)DataLoader:定义一个新的迭代器,实现批量(batch)读取,打乱数据。图4-1的左边是torch.utils.data工具包,它包括以下4个类。数据增强等)主要工具包及相互关系如图4-1所示。原创 2025-08-18 23:17:39 · 341 阅读 · 0 评论 -
PyTorch神经网络工具箱(动态修改学习率参数)
修改参数的方式可以通过修改参数optimizer.params_groups或新建optimizer。新建optimizer比较简单,optimizer十分轻量级,所以开销很小。但是新的优化器会初始化动量等状态信息,这对于使用动量的优化器(momentum参数的sgd)可能会造成收敛中的震荡。所以,这里直接采用修改参数optimizer.params_groups。原创 2025-08-18 08:33:50 · 153 阅读 · 0 评论 -
PyTorch神经网络工具箱(动态修改学习率参数)
修改参数的方式可以通过修改参数optimizer.params_groups或新建optimizer。新建optimizer比较简单,optimizer十分轻量级,所以开销很小。但是新的优化器会初始化动量等状态信息,这对于使用动量的优化器(momentum参数的sgd)可能会造成收敛中的震荡。所以,这里直接采用修改参数optimizer.params_groups。原创 2025-08-18 08:33:18 · 120 阅读 · 0 评论 -
PyTorch神经网络工具箱全解析:nn.Module vs nn.functional
提供全连接层(nn.Linear)、卷积层(nn.Conv2d)、损失层()等高性能内置层,均经 cuDNN 深度优化,支持 GPU 加速。nn.Module优势:参数自动追踪、模块化设计、训练/测试切换自动化。掌握nn.Module与的分工,是构建高效、可维护PyTorch模型的基础。参数即状态 →nn.Module纯函数操作 →合理搭配二者,可大幅提升开发效率与代码可读性!原创 2025-08-17 21:32:29 · 301 阅读 · 0 评论 -
PyTorch神经网络工具箱(神经网络工具箱nn)
前面我们使用Autograd及Tensor实现机器学习实例时,需要做不少设置,如对叶子节点的参数requires_grad设置为True,然后调用backward,再从grad属性中提取梯度。对于大规模的网络,Autograd太过于底层和烦琐。为了简单、有效解决这个问题,nn是一个有效工具。在nn工具箱中有两个重要模块:nn.Model、nn.functional,接下来将介绍这两个模块。原创 2025-08-17 21:31:57 · 322 阅读 · 0 评论 -
如何构建一个神经网络?从零开始搭建你的第一个深度学习模型
选择和组织网络层:通过Sequential或字典方式定义层结构;定义前向传播函数:控制数据在网络中的流动方式;设置损失函数与优化器:决定模型如何学习;实现反向传播与参数更新:自动求导机制简化了这一过程;进行模型训练与验证:合理划分训练阶段与验证阶段。原创 2025-08-16 10:09:29 · 920 阅读 · 0 评论 -
PyTorch神经网络工具箱(如何构建神经网络?)
3.2节中通过使用nn工具箱,搭建了一个神经网络。虽然步骤较多,但关键就是选择网络层,构建网络,然后选择损失和优化器。在nn工具箱中,可以直接引用的网络很多,有全连接层、卷积层、循环层、正则化层、激活层等等。假设这些层都定义好了,接下来应该如何组织或构建这些层呢?原创 2025-08-16 10:08:49 · 285 阅读 · 0 评论 -
使用PyTorch构建神经网络:手写数字识别实战
本文从PyTorch构建神经网络的核心工具入手,逐步实现了MNIST手写数字识别的完整流程,包括数据加载、预处理、网络构建、训练、评估和可视化。通过本例,我们可以掌握PyTorch的基本使用方法,并理解神经网络的运行机制。构建更复杂的模型(如CNN、RNN、Transformer)引入迁移学习、模型微调等高级技巧使用PyTorch Lightning提升代码结构和训练效率。原创 2025-08-15 08:33:53 · 400 阅读 · 0 评论 -
PyTorch神经网络工具箱(实现神经网络实例)
使用PyTorch构建神经网络使用的主要工具(或类)及相互关系,如图3-2所示。从图3-2可知,构建网络层可以基于Module类或函数(nn.functional)。nn中的大多数层(Layer)在functional中都有与之对应的函数。nn.functional中函数与nn.Module中的Layer的主要区别是后者继承Module类,会自动提取可学习的参数。而nn.functional更像是纯函数。两者功能相同,且性能也没有很大区别,那么如何选择呢?像卷积层、全连接层、Dropout层等因含有原创 2025-08-15 08:33:13 · 425 阅读 · 0 评论 -
神经网络的核心组件解析:从理论到实践
我们使用之前定义的类。神经网络虽然复杂,但其核心组件相对简单且功能明确。通过理解层、模型、损失函数与优化器这四个关键部分,我们可以快速构建和训练神经网络模型。PyTorch的nn工具箱为我们提供了丰富的现成类和函数,极大简化了开发流程。掌握这些核心概念和工具的使用,是深入学习深度学习的第一步。未来,随着对神经网络理解的加深,我们可以进一步探索更复杂的模型结构、优化策略和损失函数设计,从而应对更复杂的问题和数据集。原创 2025-08-13 23:18:23 · 360 阅读 · 0 评论 -
PyTorch神经网络工具箱(神经网络核心组件)
损失值用于衡量预测值与目标结果的匹配或相似程度,优化器利用损失值更新权重参数,从而使损失值越来越小。损失函数把预测值与真实值进行比较,得到损失值(损失值可以是距离、概率值等),该。神经网络看起来很复杂,节点很多,层数多,参数更多。但核心部分或组件不多,把。当然这些核心组件不是独立的,它们之间,以及它们与神经网络其他组件之间有密切。多个层链接在一起构成一个模型或网络,输入数据通过这个模型转换为预测值,然后。为便于读者理解,我们可以把这些关键组件及相互关系,用图3-1表示。包或类,可以直接使用,非常方便。原创 2025-08-13 23:17:52 · 388 阅读 · 0 评论 -
PyTorch Tensor完全指南:深度学习数据操作的核心艺术
在深度学习领域,Tensor是构建模型的基础材料,如同建筑师手中的砖石。掌握Tensor操作,是开启AI创作之旅的第一步。原创 2025-08-13 23:16:12 · 948 阅读 · 0 评论 -
PyTorch基础(Numpy与Tensor)
对Tensor的操作很多,从接口的角度来划分,可以分为两类:1)torch.function,如torch.sum、torch.add等;2)tensor.function,如tensor.view、tensor.add等。这些操作对大部分Tensor都是等价的,如torch.add(x,y)与x.add(y)等价。在实际使用时,可以根据个人爱好选择。如果从修改方式的角度来划分,可以分为以下两类:1)不修改自身数据,如x.add(y),x的数据不变,返回一个新的Tensor。原创 2025-08-13 23:15:33 · 1017 阅读 · 0 评论 -
TensorFlow实现回归分析详解
本文使用TensorFlow框架实现了与之前NumPy和PyTorch相同的回归分析任务,通过比较可以更清楚地了解不同框架之间的特点。原创 2025-08-13 23:14:29 · 470 阅读 · 0 评论 -
PyTorch基础(使用TensorFlow架构)
2.6节介绍了用Numpy实现回归分析,2.7节介绍了用PyTorch的Autograd及Tensor实现这个任务。这节我们将用深度学习的另一个框架,TensorFlow,实现该回归分析任务,大家可比较一下使用不同架构之间的一些区别。为便于比较,这里使用TensorFlow的静态图(TensorFlow2.0新增核心功能Eager Execution,并把Eager Execution变为TensorFlow默认的执行模式。原创 2025-08-13 23:13:57 · 439 阅读 · 0 评论 -
使用纯NumPy实现回归任务:深入理解机器学习本质
total_loss = loss.sum() # 所有样本损失之和NumPy实现的价值透明机制:每个运算步骤完全可见⚙️ 数学本质:揭示梯度下降和反向传播核心原理🔍 调试优势:便于定位问题和理解优化过程📈 仅适合简单模型⏱️ 复杂网络需大量重复代码缺乏自动微分等高级功能通过这个基础实现,我们能更深刻地理解PyTorch/TensorFlow等框架封装的高级功能背后的数学原理,为后续学习打下坚实基础。原创 2025-08-11 22:13:29 · 637 阅读 · 0 评论 -
PyTorch基础(使用Numpy实现机器学习)
前面已经介绍了Numpy、Tensor的基础内容,对如何使用Numpy、Tensor操作数组有了一定认识。为了加深大家对使用PyTorch完成机器学习、深度学习的理解,本章剩余章节将分别用Numpy、Tensor、autograd、nn及optimal来实现同一个机器学习任务,比较它们之间的异同及各自优缺点,从而使读者加深对PyTorch的理解。首先,我们用最原始的Numpy实现有关回归的一个机器学习任务,不用PyTorch中的包或类。原创 2025-08-11 22:12:57 · 774 阅读 · 0 评论 -
PyTorch基础(使用Tensor及Antograd实现机器学习)
2.6节可以说是纯手工完成一个机器学习任务,数据用Numpy表示,梯度及学习是自己定义并构建学习模型。这种方法适合于比较简单的情况,如果稍微复杂一些,代码量将几何级增加。那是否有更方便的方法呢?本节我们将使用PyTorch的一个自动求导的包——antograd,利用这个包及对应的Tensor,便可利用自动反向传播来求梯度,无须手工计算梯度。以下是具体实现代码。原创 2025-08-11 22:12:27 · 349 阅读 · 0 评论 -
PyTorch基础(Tensor与Autograd)
定义输入张量X#初始化权重参数W,偏移量b,并设置require_grad属性为True,为自动求导#实现前向传播print("x,w,b的require_grad属性分别为:{},{},{}".format(x.requires_grad,w.requires_grad,b.requires_grad))运行结果x,w,b的require_grad属性分别为:False,True,True#定义叶子节点张量x,形状为1x2#初始化Jacobain矩阵#初始化目标张量,形状为1x2。原创 2025-08-11 22:11:56 · 890 阅读 · 0 评论 -
深入解析NumPy广播机制:让不同形状的数组无缝运算
在数据科学领域,NumPy的广播机制(Broadcasting) 是处理多维数组运算的核心魔法。它允许不同形状的数组进行算术运算,大幅提升代码效率与可读性。本文通过图文+代码深度解析其运作原理。原创 2025-08-10 16:38:36 · 326 阅读 · 0 评论 -
Numpy基础(广播机制)
B又如何由(1,3)变为(4,3)矩阵?·根据规则2,输出的结果为各个轴上的最大值,即输出结果应该为(4,3)矩阵,那。3)如果输入数组的某个轴和输出数组的对应轴的长度相同或者某个轴的长度为1时,4)当输入数组的某个轴的长度为1时,沿着此轴运算时都用(或复制)此轴上的第一。·根据规则4,用此轴上的第一组值(要主要区分是哪个轴),进行复制(但在实际处。目的:A+B,其中A为4×1矩阵,B为一维向量(3,)。则b向a看齐,在b的前面加1,变为:1×3×2。·根据规则1,B需要向看齐,把B变为(1,3)原创 2025-08-10 16:38:06 · 255 阅读 · 0 评论 -
Numpy基础(通用函数)
Numpy提供了两种基本的对象,即ndarray和ufunc对象。前文已经介绍了ndarray,本节将介绍Numpy的另一个对象通用函数(ufunc)。ufunc是universal function的缩写,它是一种能对数组的每个元素进行操作的函数。许多ufunc函数都是用C语言级别实现的,因此它们的计算速度非常快。此外,它们比math模块中的函数更灵活。math模块的输入一般是标量,但Numpy中的函数可以是向量或矩阵,而利用向量或矩阵可以避免使用循环语句,原创 2025-08-09 22:10:56 · 364 阅读 · 0 评论