- 博客(59)
- 收藏
- 关注
原创 模型的验证
本文介绍了PyTorch模型验证的关键步骤。首先强调了模型验证对评估泛化能力的重要性,然后展示了一个使用预训练CNN模型进行图像分类的完整流程。重点解决了模型加载时的常见问题:当保存完整模型时可能出现的路径错误,建议优先保存模型参数而非整个模型。代码演示了图像预处理、模型加载(处理GPU/CPU转换)和推理过程,最终成功识别出狗的图像(类别5)。验证结果表明模型针对未见数据具有良好的预测能力,实现了预期的分类功能。
2025-07-31 13:16:15
744
原创 使用GPU训练模型
本文介绍了利用GPU加速深度学习模型训练的两种实现方式。首先解释了GPU并行计算能力对深度学习训练效率的提升原理,对比了CPU串行计算的劣势。然后详细讲解了CUDA并行计算平台的工作原理及其在深度学习中的应用。代码实现部分展示了.cuda()和.to(device)两种将模型和数据迁移到GPU的方法,并通过CIFAR10分类任务进行了性能对比测试。最后介绍了Google Colab提供的免费GPU资源环境,演示了如何在该平台上运行上述代码。实验结果表明,GPU训练速度比CPU快数十倍,能显著提升深度学习模型
2025-07-27 20:51:21
994
原创 模型训练基础流程
深度学习模型训练流程主要包含5个核心步骤:1)数据准备(加载数据集、划分训练/测试集、创建数据加载器);2)模型定义(设计网络结构如CNN);3)训练配置(选择损失函数和优化器,设置超参数);4)训练循环(前向传播、损失计算、反向传播、参数更新);5)模型评估与保存(计算准确率、保存模型、记录训练指标)。关键点包括使用argmax计算分类准确率,以及通过model.train()和model.eval()管理训练/评估模式。整个流程需要数据准备、模型训练、性能评估3个阶段的协同工作。
2025-07-27 04:29:13
1089
原创 关于网络模型的使用和修改/保存和读取
本文介绍了PyTorch中现有网络模型的使用和保存方法。主要内容包括:1)如何使用预训练的VGG16模型(pretrained=True/False的区别),并通过修改分类器层实现模型微调;2)两种模型保存和加载方式:方式一保存完整模型结构(存在安全风险),方式二仅保存模型参数(官方推荐的安全方法)。文章还解释了预训练模型的作用,包括加速训练、提升小数据集性能和降低数据依赖等优势。
2025-07-25 21:50:46
883
原创 损失函数,反向传播,优化器
反向传播是计算梯度的算法,核心作用是高效求解 “损失函数对模型所有参数的偏导数”(即梯度)。没有反向传播,深度学习的大规模训练几乎不可能实现。 优化器的作用是根据反向传播计算的梯度,更新模型参数,最终目的是减小损失。它是 “梯度→参数更新” 的执行者。
2025-07-23 22:41:59
453
原创 神经网络——线性层
在机器学习中,线性层(Linear Layer) 是一种基础的神经网络组件,也称为全连接层(Fully Connected Layer) 或密集层(Dense Layer)。
2025-07-21 21:03:05
638
原创 神经网络——归一化层
归一化层(Normalization Layer)是深度学习中一种关键的技术,用于对神经网络某一层的输入进行标准化处理,从而改善模型的训练稳定性和收敛速度。
2025-07-21 20:30:05
1232
原创 神经网络——非线性激活
在神经网络中,非线性激活函数是核心组件之一,它赋予了神经网络拟合复杂非线性关系的能力。如果没有非线性激活函数,无论神经网络有多少层,最终都只能实现线性映射,无法处理图像识别、自然语言处理等复杂任务。
2025-07-21 19:49:29
1057
原创 神经网络——池化层
最大池化层是卷积神经网络(CNN)中用于下采样(Downsampling) 的关键组件,通过在输入特征图的局部非重叠区域(池化窗口)内选取最大值作为输出,实现特征筛选与维度压缩。其核心是保留局部区域内最显著的特征信号,同时降低特征图的空间分辨率。
2025-07-20 00:57:28
1168
原创 神经网络——卷积层
卷积层通过卷积核(过滤器)在输入数据(如图像)上滑动,进行逐元素乘法并求和,从而提取局部特征。每个卷积核学习不同的特征(如边缘、纹理),最终生成多个特征图。
2025-07-19 03:50:11
916
原创 卷积神经网络基础
卷积是数学和工程领域中一个重要的运算,广泛应用于信号处理、图像处理、机器学习(尤其是卷积神经网络)等领域。简单来说,卷积描述了两个函数之间的 “相互作用”—— 通过一个函数对另一个函数进行 “加权滑动平均”,实现信号的平滑、特征提取等效果。
2025-07-19 02:08:50
709
原创 神经网络的基本骨架——nn.Module的使用(torch.nn库)
在 PyTorch 中,nn.Module 是所有神经网络模块的基类,用于构建和组织深度学习模型。它提供了一系列工具和功能,使模型的定义、训练和部署更加高效和灵活。nn = Neural Network(神经网络)
2025-07-18 02:38:47
502
原创 DataLoader
在 PyTorch 中,DataLoader是torch.utils.data模块中的一个重要类,用于将数据集包装成可迭代对象,在训练和测试模型时提供了高效、便捷的数据加载和批处理功能。
2025-07-18 02:03:04
694
原创 torchvision中的数据集使用
PyTorch 通过简洁的 API 提供了一站式数据集下载、预处理和加载方案,使你可以专注于模型开发而非数据处理。
2025-07-17 02:57:34
881
原创 基础专有术语
专业解释:基于自注意力机制(Self-Attention)的模型,能直接计算序列中任意两个元素的关联(如句子中词语的依赖),无需按顺序处理,广泛用于 NLP(如 BERT、GPT)。专业解释:由生成器(生成类似真实数据的样本)和判别器(区分真实数据与生成数据)组成,两者对抗训练,最终生成器能产出逼真数据(如假人脸、假图片)。专业解释:利用带标签的训练数据(输入 + 对应输出),训练模型学习输入到输出的映射关系,用于预测新数据的标签,如分类、回归。专业解释:每次模型参数更新时输入的样本数量。
2025-07-15 20:19:35
922
原创 Transforms
在 PyTorch 生态中,torchvision.transforms 是专门用于图像和视频预处理的模块,提供了丰富的变换工具,常用于数据增强、归一化和格式转换。
2025-07-12 23:56:09
946
原创 TensorBoard
TensorBoard 是 TensorFlow 的可视化工具组件,可帮助用户理解、调试和优化深度学习模型。它通过可视化训练过程中的指标(如损失函数和准确率)、模型结构、权重分布等信息,帮助用户直观地监控和分析模型训练过程。
2025-07-12 22:21:09
973
原创 Pytorch加载数据-(Dataset/DataLoader)
在深度学习中,Dataset 和 DataLoader 是两个核心概念,用于高效地处理和加载数据。它们通常出现在 PyTorch、TensorFlow 等框架中,帮助用户管理大规模数据集并优化训练流程。
2025-07-11 00:45:17
1023
原创 两个法宝函数-dir()和help()
函数用于返回对象(如变量、函数、模块、类等)的所有属性和方法的列表,帮助你快速了解一个对象能做什么。:返回当前作用域中定义的所有名称(变量、函数、导入的模块等)。函数用于获取对象的详细帮助信息(文档字符串,即。),包括功能说明、参数解释、使用示例等,比。,可输入对象名查看详细信息(按。:返回该对象的所有属性和方法。:直接打印该对象的帮助文档。
2025-07-07 20:51:44
265
原创 Python编译器(Pycharm Jupyter)
Jupyter 是一个开源的交互式计算环境,能够让用户将代码、文本(包括 Markdown)、可视化结果等内容整合在一个文档中,非常适合进行数据分析、科学计算以及教学演示等工作。
2025-07-07 18:36:42
1048
原创 Anaconda/PyTorch的环境配置及安装
PyTorch 是一个开源的深度学习框架,由 Facebook AI Research(FAIR)开发并维护。它基于 Python 和 Torch 库,专为机器学习和深度学习任务设计,尤其在自然语言处理(NLP)、计算机视觉(CV)和语音识别等领域应用广泛。
2025-07-07 11:42:37
1178
原创 numpy库
其中,向量只能使用 np.flipud( ),在数学中,向量并不是横着排的,而是竖着排的。花式索引(Fancy indexing)又名“花哨的索引”,UP 认为不应该用“花哨”来形容,这里的 Fancy 应取“华丽的、巧妙的、奢华的、时髦的”之义。一维数组转二维数组,还是二维数组转一维数组,均要使用的是数组的重塑方法 .reshape( ) ,该方法需要传入重塑后的形状(shape)参数。若一个普通数组和一个布尔型数组的维度相同,可以将布尔型数组作为普通数组的掩码,这样可以对普通数组中的元素作筛选。
2025-02-17 20:46:41
1253
原创 Python基础语法
目录一、变量类型与输出语句二、基本变量类型三、高级变量类型四、函数五、类高级变量类型:集合、元组、列表、字典。七种变量类型,示例如下。In [1] :# 字符串(str)str_v = "a real man"In [2] :# 数字(int 或 float)num_v = 415411In [3] :# 布尔型(bool)bool_v = TrueIn [4] :# 集合(set)set_v = {1, 2, 3, 1}In [5] :# 元组(tuple)tuple_v = (1, 2, 3)In [6
2025-02-13 15:11:11
348
原创 快速幂算法
快速幂算法能帮我们算出指数非常大的幂,传统的求幂算法之所以时间复杂度非常高(为O(指数n)),就是因为当指数n非常大的时候,需要执行的循环操作次数也非常大。因此,如果题目让你求2的100次方,程序设计语言中最大的long lnog类型也无法承载这么大的数值,所以题目才不会要求你输出结果,因为结果可能会非常的大,大到没有任何类型可以承载。因此,我们可以借助这个法则,只需要在循环乘积的每一步都提前进行“取模”运算,而不是等到最后直接对结果“取模”,也能达到同样的效果。2^100的幂结果的后三位整数位376。
2025-02-06 23:28:12
288
原创 位运算及常用技巧
我们知道,在二进制中,最低位决定了是奇数还是偶数,所以我们可以提取出最低位的值,即与1 相与即可实现目的,为0 则是偶数,为1 则是奇数。例如对于− 15 ,其补码为11110001 右移一位( − 15 > > 1 )得到的是11111000 即− 8 其他的同理。那么对于负数的位运算而言,它们的操作都是建立在补码上的,得到的运算结果是补码,最后将补码结果转化成一个普通的十进制数结果。,对于有符号数的右移操作,不同的处理器架构可能有不同的规定。将x左移一位实现× 2 将x 右移一位实现÷ 2。
2025-02-06 23:04:22
354
原创 Python基础语法全解
目录一、Python简介1.了解Python2.Python介绍3.Python特点4.Python发展历史5.Python版本二、Python解释器1.解释器的作用2.解释器的安装三、PyCharm安装与使用1.PyCharm的作用2.PyCharm安装与使用四、注释1.注释的作用2.注释的分类及语法五、变量1.变量的作用2.定义变量2.1标识符2.2命名习惯2.3使用变量2.4认识bug2.5Debug工具六、数据类型七、输出1.格式化输出2.内置函数format
2025-01-18 18:36:23
559
原创 基础汉诺塔
那么我们要做的是先将n-1个盘子移动到b,然后将最后一个盘子也就是第n个盘子移动到c,再把b上的n-1个盘子移动到c。其中n-1个盘子的移动过程就是将n-2个盘子移动到c,然后将第n-1个盘子移动到b 再将c柱上n-2个盘子移动到b,然后其中第n-2个盘子的移动过程是先将n-3个盘子移动到。问题的背景来源于一个传说:在印度的一个寺庙里,有三根金刚石柱和64个直径大小不一的金盘。若再画一个四层汉诺塔 会发现实际就是 把上三层放到辅助托盘 第四层放到目标托盘 再把上三层放到目标托盘。每次只能移动一个金盘。
2024-11-29 22:40:12
722
1
原创 求质数的几种方法(埃拉托斯特尼筛和欧拉筛)
法一:循环朴素求解法一:循环朴素求解1.暴力所有数字2.优化长度(1)除2 缩短长度(2)剔除偶数(2以后的偶数都是合数)(3)开根号 缩短长度例如:100 可以用 1 * 100,2 * 50 ,4 * 25 ,5 * 20,10 * 10表示每个式子中总会有一个数小于等于100开平方 所以才有了这种方法。
2024-11-26 00:59:44
704
1
原创 KMP算法
在这里j指针之所以退回到next[j-1]的位置,因为字符"f"前面的子串为"aabaa",该子串的最大相等前后缀为"aa",而该子串的后缀"aa"已经与s[3]s[4]比较过是相等的,那么子串的前缀就一定是与s[3]s[4]相等的,不需要比较,因此我们的j可以从前缀的后面第一个字符开始匹配,而前缀的长度为next[j-1],所以j应该回退到next[j-1]。从上面的流程可以看到,在子串的某一个字符t[j]处匹配失败时,我们需要查找该字符前面的那个子串的最大相等前后缀的长度,即next[j-1],
2024-11-10 21:40:38
916
原创 小程序配置文件
Author:Dawn_T17🥥 根据小程序的业务逻辑和用户使用流程,合理安排页面的顺序。如果某些页面之间有紧密的关联,或者用户在使用过程中经常会在这些页面之间切换,可以将它们放在相邻的位置。这样在代码维护和调试时会更加方便,也有助于提高用户体验。
2024-10-08 18:41:16
1888
2
原创 SpringWeb后端开发-登录认证
Author:Dawn_T17🥥用户在登录成功后,服务器根据用户信息生成一个包含用户身份和权限等信息的 Token(令牌),并将其返回给客户端。客户端在后续的请求中携带这个 Token,服务器通过验证 Token 的有效性来确定用户的身份和状态。Token 通常是一个经过加密的字符串,可以使用对称加密或非对称加密算法进行签名,以确保其真实性和完整性。
2024-08-30 23:28:22
1566
2
原创 配置文件(Properties&YAML)
Author:Dawn_T17🥥二、使用场景应用程序配置用于管理应用程序的各种配置参数,如数据库连接信息、服务器端口、日志级别等。通过将这些配置集中在一个或多个带有@ConfigurationProperties注解的类中,可以方便地进行配置管理和维护。例如,可以创建一个DatabaseProperties类来管理数据库配置,一个ServerProperties类来管理服务器配置等。微服务架构在微服务架构中,各个服务可能需要不同的配置。使用@ConfigurationPrope
2024-08-29 03:32:45
2014
原创 文件上传和存储(阿里云OSS)
Author:Dawn_T17🥥阿里云对象存储服务(Object Storage Service,简称OSS)为您提供基于网络的数据存取服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。阿里云OSS将数据文件以对象(object)的形式上传到存储空间(bucket)中。您可以进行以下操作:创建一个或者多个存储空间,向每个存储空间中添加一个或多个文件。通过获取已上传文件的地址进行文件的分享和下载。通过修改存储空间或文件的属性或元信息来设置相
2024-08-28 03:34:58
1694
1
原创 MyBatis
Author:Dawn_T17🥥MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 ---MyBatis官网
2024-08-18 22:40:18
1004
原创 SpringBoot Web开发(请求,响应,分层解耦)
Author:Dawn_T17🥥在 Spring Boot 的 Web 请求响应处理中,Servlet起着关键的作用。Servlet是 Java Web 开发中的基本组件,主要负责处理客户端的请求并生成响应。具体来说,它具有以下重要作用:接收请求:Servlet能够接收来自客户端(如浏览器)发送的 HTTP 请求。处理请求:在接收到请求后,执行相应的业务逻辑处理。这可能包括与数据库交互、进行数据计算、验证用户输入等操作。控制流程:根据请求的类型和参数,决定后续的处理流程和响应方式。
2024-08-10 03:29:21
1458
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅