- 博客(40)
- 收藏
- 关注
原创 T4:猴痘病识别
本文介绍了一个基于CNN的猴痘分类模型构建过程。首先通过TensorFlow设置GPU环境并导入猴痘图像数据集,使用image_dataset_from_directory方法划分训练集和验证集。数据预处理阶段对图像进行归一化处理并配置数据集缓存优化。模型采用包含3个卷积层、2个Dropout层和2个全连接层的CNN结构,输入图像尺寸为224×224×3。训练过程中使用Adam优化器和模型检查点保存最佳权重,共训练50个epoch。实验通过可视化部分样本数据验证了数据加载的正确性,并展示了网络结构细节。该流
2025-08-22 21:52:53
543
原创 T3周:天气识别
因此,训练所用的时间是 CPU 预处理时间和加速器训练时间的总和。当加速器正在执行第 N 个训练步时,CPU 正在准备第 N+1 步的数据。这样做不仅可以最大限度地缩短训练的单步用时(而不是总用时),而且可以缩短提取和转换数据所需的时间。● shuffle():打乱数据,关于此函数的详细介绍可以参考:https://zhuanlan.zhihu.com/p/42417456。以下示例使用了准确率,即被正确分类的图像的比率。优化器(optimizer):决定模型如何根据其看到的数据和自身的损失函数进行更新。
2025-08-08 22:12:58
139
原创 CIFAR10实战
本文展示了使用PyTorch对CIFAR10数据集进行分类任务的完整流程。首先通过torchvision下载并预处理数据,构建数据加载器。初始模型采用简单的卷积神经网络结构,包含三个卷积层和两个全连接层,训练10个周期后准确率仅为73%。为提高性能,作者对模型进行了优化,在卷积层后添加批归一化(BatchNorm)和ReLU激活函数,以加速训练并提高模型泛化能力。实验使用TensorBoard可视化训练过程和结果,包括损失和准确率曲线。代码展示了完整的深度学习流程,从数据加载、模型构建、训练到优化改进。
2025-08-01 10:32:39
454
原创 T1周:实现mnist手写数字识别
本文介绍了使用TensorFlow构建和训练LeNet-5卷积神经网络进行MNIST手写数字识别。主要内容包括:数据预处理(归一化、格式调整)、CNN模型构建(包含卷积层、池化层和全连接层)、模型训练及评估。实验结果表明该模型在测试集上准确率达到98%以上。最后展示了模型预测过程,验证了其对手写数字的有效识别能力。整个过程展示了深度学习在图像分类任务中的基本应用流程。
2025-07-25 21:31:05
140
原创 LeetCode题解---<20.有效括号>
本文介绍了一种使用栈结构判断括号字符串是否有效的方法。算法通过维护一个栈来匹配括号对:遇到开括号入栈,遇到闭括号则检查栈顶是否为对应的开括号。关键点包括:1) 使用字典存储闭括号到开括号的映射关系;2) 处理闭括号时检查栈是否为空或栈顶是否匹配;3) 最后检查栈是否为空来判断有效性。该方法时间复杂度为O(n),能正确处理嵌套和顺序关系,如"([])"返回true而"([)]"返回false。
2025-07-21 10:29:46
337
原创 LeetCode题解---<203.移除链表元素>
本文介绍了如何删除链表中所有值为给定val的节点。通过设置dummy临时节点作为头节点前驱,可以简化删除操作。使用pre指针跟随当前节点head,当遇到目标值时修改pre.next跳过该节点。算法时间复杂度为O(n),空间复杂度O(1)。关键点在于dummy节点的设置和pre指针的维护,确保能正确处理头节点删除和连续目标值的情况。代码示例展示了完整的实现过程,包括链表遍历和节点删除操作。
2025-07-15 22:01:49
154
原创 数据结构与算法---<链表及常用操作>
摘要:本文介绍了链表的数据结构特点及其基本操作。链表的内存空间不连续,通过next指针连接节点,分为单端和双端链表。其时间复杂度为:访问和搜索O(N),插入和删除O(1)。链表适合写多读少的场景,具有"写的快、读的慢"的特点。文中以Python的deque为例,详细说明了链表的创建、增删改查等操作,包括append、insert、index等方法的实现及时间复杂度分析。最后还介绍了获取链表长度的len()方法。
2025-07-15 20:04:47
384
原创 Python中关于数组的常见操作
这篇文章介绍了Python中数组(列表)的常见操作方法,包括:创建空数组、添加元素(append())、访问元素(索引)、修改元素(直接赋值)、删除元素(remove()和del)、遍历数组(for循环)、查找元素(index())、获取数组长度(len())、以及排序方法(sort())。其中排序方法可以设置reverse参数控制升/降序,key参数指定排序依据。这些操作涵盖了数组的基本增删改查功能,是Python中处理列表数据的基础知识。
2025-07-15 13:55:47
143
原创 LeetCode题解---<27.移除元素>
这篇文章介绍了如何从数组中移除指定值的元素,并返回剩余元素的数量。题目要求原地修改数组,将不等于目标值的元素放在数组前部,剩余元素顺序不重要。给出的Python解决方案使用计数和循环移除方法:首先统计目标值的出现次数,然后使用remove()函数逐个删除这些元素。关键点在于理解remove()每次只能删除一个目标值,因此需要根据统计次数进行多次移除操作。最终返回剩余数组长度即可通过测试,评测时会验证前k个元素的有效性。
2025-07-14 21:28:36
319
原创 李沐动手学深度学习Pytorch-v2笔记【08线性回归+基础优化算法】2
本文介绍了使用PyTorch深度学习框架简洁实现线性回归模型的方法。主要内容包括:1)利用d2l工具生成合成数据集;2)使用DataLoader构建数据迭代器;3)通过nn.Sequential快速搭建网络结构;4)参数初始化方法;5)采用MSELoss作为损失函数;6)使用SGD优化器进行训练。文章着重展示了PyTorch框架提供的简洁API,如TensorDataset、DataLoader、nn.Linear等,这些组件大大简化了模型实现过程。最后给出了训练循环的代码示例,包括前向传播、反向传播和参数
2025-07-14 21:06:46
575
原创 LeetCode题解---<283.移动零>
本文提出了一种使用双指针原地移动数组零元素的方法。通过维护两个指针i和j,当j指针遇到非零元素时,将其移动到i指针位置并同时移动两个指针;遇到零元素时仅移动j指针。遍历完成后,所有非零元素已按原顺序排列在前部,剩余位置补零即可。该方法时间复杂度为O(n),仅需一次遍历且无需额外空间,满足题目原地操作的要求。关键点在于利用双指针区分处理非零元素和零元素,既保持了非零元素的相对顺序,又高效地完成了零元素的移动。
2025-07-13 14:12:59
228
原创 LeetCode题解---<485.最大连续1的个数>
题目要求计算二进制数组中最大连续1的个数。通过遍历数组,维护两个计数器:一个记录当前连续1的个数,另一个保存历史最大值。遇到1时增加当前计数并更新最大值;遇到0时重置当前计数。最终返回历史最大值即可。该方法时间复杂度O(n),空间复杂度O(1),高效解决了问题。关键点在于动态更新当前连续1的计数并及时比较更新最大值。
2025-07-12 23:40:02
353
原创 李沐动手学深度学习Pytorch-v2笔记【08线性回归+基础优化算法】
本文介绍了从零开始实现线性回归模型的全过程。首先使用PyTorch生成带噪声的人工合成数据集,其中特征X服从正态分布,标签y由线性模型y=Xw+b加上高斯噪声得到。然后实现了数据迭代器data_iter来随机生成小批量数据。模型参数w和b通过正态分布和零值初始化,并定义了线性回归模型linreg、均方损失函数squared_loss和小批量随机梯度下降优化器sgd。在训练过程中,使用3个epoch和0.03的学习率进行迭代优化,最终得到的参数估计值与真实值非常接近,验证了训练效果。整个实现涵盖了数据准备、模
2025-07-12 20:57:32
1262
原创 李沐动手学深度学习Pytorch-v2笔记【07自动求导代码实现】
本文介绍了PyTorch自动求导的实现原理和应用。通过示例代码演示了标量求导(如y=2x²对x求导)、非标量反向传播(需先聚合为标量)以及分离计算(detach方法)。特别解析了控制流梯度计算,证明在循环和分支条件下,梯度仍能正确计算且满足a.grad==d/a的关系。所有实例均使用PyTorch的自动微分机制,展示了其对复杂计算图(包括动态控制流)的强大处理能力。
2025-07-11 22:11:57
1182
原创 P9周:YOLOv5-Backbone模块实现
本文介绍了365天深度学习训练营中关于天气图像分类任务的实现过程。首先进行GPU设置和数据导入,使用torchvision.transforms对图像进行预处理和标准化。数据集按8:2比例划分为训练集和测试集,batch_size设为4。模型搭建部分展示了包含Backbone模块的网络结构,定义了Conv、Bottleneck和C3等核心组件,其中Conv实现标准卷积操作,Bottleneck构建瓶颈结构,C3模块整合了3个卷积层。整个流程涵盖了从数据准备到模型搭建的关键步骤,为后续的天气分类任务训练奠定了
2025-07-11 19:13:19
320
原创 <数据结构与算法>---P1算法的时间复杂度
摘要:本文介绍了时间复杂度的概念及其大O表示法。通过Python代码示例详细解析了常见时间复杂度类型,包括O(1)、O(logN)、O(N)、O(M+N)、O(NlogN)和O(N²)等。文章通过数学推导说明如何计算算法的时间复杂度,并强调在算法设计中应尽量降低时间复杂度。最后通过对比表格展示了不同时间复杂度等级的性能差异,指出O(1)是最优但较少见的情况,而O(N)级别的算法如二分查找较为常见。理解时间复杂度有助于优化算法性能。
2025-07-11 08:58:22
310
原创 LeetCode题解---<接雨水>
摘要:本文介绍了计算接雨水问题的动态规划解法。给定表示柱子高度的非负整数数组,通过构建左右最大高度数组left_max和right_max,计算每个柱子的接水量(取左右最大高度的较小值减去当前高度)。文章给出了两种Python实现:一种通过翻转数组简化计算,另一种采用官方标准解法。两种方法均能正确计算可接雨水总量,时间复杂度为O(n),空间复杂度为O(n)。示例输入[0,1,0,2,1,0,1,3,2,1,2,1]输出6,验证了算法有效性。
2025-07-08 21:22:56
514
原创 LeetCode题解---<三数之和>
本文介绍了LeetCode题目"三数之和"的Python解法。该问题要求在给定整数数组中找到所有不重复的三元组,使其和为0。采用双指针法,首先将数组排序,然后固定一个元素作为目标,转化为两数之和问题。关键点在于处理边界条件和避免重复结果:通过跳过重复的目标元素和指针移动过程中的重复元素来确保结果唯一。时间复杂度主要取决于排序步骤,为O(n^2)。该方法有效解决了三数之和问题,同时避免了重复结果的产生。
2025-07-08 19:53:51
408
原创 李沐动手学深度学习Pytorch-v2笔记【04数据预处理】
本文介绍了使用Python处理房屋价格数据的完整流程。首先创建CSV文件存储包含缺失值的数据,然后使用pandas读取数据。针对缺失值处理,演示了均值插值法和创建虚拟变量两种方法。最后将处理后的数据转换为PyTorch张量格式,为后续机器学习建模做好准备。整个过程涵盖了数据导入、缺失值处理和数据类型转换等关键步骤,展示了数据预处理的基本流程。
2025-07-06 19:13:33
236
原创 P8周:YOLOv5-C3模块实现
本文是作者参加"365天深度学习训练营"的学习记录博客,原作者为K同学。文章通过一系列图片展示了深度学习训练过程中的关键内容,包括网络结构、训练过程、数据可视化等。这些图片涵盖了训练过程中的不同阶段,如模型结构示意图、损失函数变化曲线、特征可视化等,反映了深度学习模型训练的全貌。文章作为学习笔记,旨在记录和分享深度学习训练经验。
2025-07-04 21:29:00
138
原创 李沐动手学深度学习Pytorch-v2笔记【04数据操作】
本文介绍了PyTorch中张量(tensor)的基本操作与数据处理方法。主要内容包括:张量的创建方式(如torch.arange、torch.zeros/ones)、形状操作(reshape、numel)、算术运算(按元素加减乘除)、逻辑运算、广播机制、切片索引以及内存管理(原地操作)。还展示了张量与NumPy数组的相互转换,以及将单元素张量转换为Python标量的方法。这些基础操作是深度学习数据处理的重要前提,为后续模型开发提供了必要的张量操作基础。
2025-07-03 23:45:47
444
原创 Pytorch --利用GPU训练
本文展示了使用PyTorch框架实现CIFAR10数据集分类任务的完整流程。首先加载并预处理CIFAR10数据集,通过DataLoader进行批量加载。然后构建了一个名为Tudui的卷积神经网络模型,包含3个卷积层和2个全连接层。在训练过程中,使用交叉熵损失函数和SGD优化器,并采用GPU加速计算。每轮训练后记录损失值和准确率,通过TensorBoard可视化训练过程。最后保存训练好的模型参数。该代码涵盖了深度学习模型开发的全流程,包括数据准备、模型构建、训练优化和评估测试等关键环节。
2025-07-03 21:19:03
184
原创 Pytorch--网络模型的保存与读取
本文介绍了两种PyTorch网络模型的保存与读取方式。方式一保存模型结构和参数(.pth格式),直接使用torch.save/load;方式二仅保存模型参数(字典形式),需配合state_dict()和load_state_dict()使用。注意事项指出自定义模型读取时需预加载模型定义,可通过导入原模型文件解决。两种方式分别适用于需要完整模型或仅需参数的不同场景,为模型部署与迁移提供了灵活选择。
2025-07-01 21:48:57
245
原创 P7:马铃薯病害识别(VGG-16复现)
● 3个全连接层(Fully connected Layer),分别用fcX与predictions表示。● 13个卷积层(Convolutional Layer),分别用blockX_convX表示。VGG-16包含了16个隐藏层(13个卷积层和3个全连接层),故称为VGG-16。● 5个池化层(Pool layer),分别用blockX_pool表示。
2025-06-27 21:08:10
223
原创 P6周:VGG-16算法-Pytorch实现人脸识别
VGG-16(Visual Geometry Group-16)是由牛津大学视觉几何组(Visual Geometry Group)提出的一种深度卷积神经网络架构,用于图像分类和对象识别任务。VGG-16在2014年被提出,是VGG系列中的一种。VGG-16之所以备受关注,是因为它在ImageNet图像识别竞赛中取得了很好的成绩,展示了其在大规模图像识别任务中的有效性。VGG-16包含了16个隐藏层(13个卷积层和3个全连接层),故称为VGG-16。● 5个池化层(Pool layer)。
2025-06-20 22:24:00
224
原创 非线性回归
摘要:该代码展示了使用PyTorch实现神经网络中的非线性变换。首先加载CIFAR10测试数据集,然后定义一个自定义网络类NetWork,在forward方法中应用sigmoid激活函数处理输入数据。通过DataLoader批量加载数据,并使用TensorBoard的SummaryWriter记录处理后的图像数据。代码展示了从数据加载、网络定义到结果可视化的完整流程,重点演示了sigmoid激活函数在神经网络中的应用及其可视化效果。
2025-06-20 13:42:29
351
原创 卷积层(Convolution Layter)
PyTorch卷积神经网络实现摘要 本文介绍了如何使用PyTorch构建简单卷积神经网络。主要内容包括: 解读nn.Conv2d的关键参数:in_channels、out_channels、kernel_size等 实现步骤: 加载CIFAR10数据集 创建继承nn.Module的CNN模型 定义包含卷积层的前向传播 使用TensorBoard可视化输出: 通过reshape调整输出维度以适应可视化 使用add_images记录每步输出 代码示例展示了从数据加载到模型训练的全流程,特别说明了卷积层参数的设置
2025-06-20 01:03:49
404
原创 卷积操作(简)
本文介绍了二维卷积操作的实现方法。首先通过官方文档说明卷积参数要求,指出输入和权重矩阵需要reshape成四维张量格式。代码示例演示了如何将5×5输入矩阵和3×3卷积核reshape为(1,1,5,5)和(1,1,3,3)的格式,然后使用torch.nn.functional.conv2d进行卷积计算。展示了stride=1和stride=2两种步长下的不同输出结果,并简要解释了stride和padding参数的作用。通过具体代码和调试过程,清晰呈现了PyTorch中二维卷积的实现流程。
2025-06-19 11:05:16
252
原创 Dataloader使用(学习笔记记录)
本文介绍了PyTorch中DataLoader的使用方法。DataLoader是数据加载器,负责将dataset中的数据批量加载到神经网络中。以CIFAR10测试数据集为例,演示了如何创建DataLoader对象,并通过tensorboard可视化加载的批量图像数据。文章还展示了如何查看dataset返回的数据类型(img和target),以及使用DataLoader进行数据迭代的基本流程。代码示例包括数据集下载、DataLoader参数配置(batch_size、shuffle等)和图像数据可视化步骤。
2025-06-18 15:55:41
174
原创 Pytorch--torchvision
本文介绍了CIFAR10数据集的下载及使用方法。首先展示如何通过PyTorch自动下载数据集,并查看参数说明文档。接着探索数据集内容,指出需将PIL对象转换为Tensor数据类型以适配PyTorch框架。随后详细说明如何使用Tensorboard可视化数据:复制日志文件绝对路径后,在终端输入tensorboard --logdir="路径"命令即可查看转换后的图片。由于CIFAR10数据集图片尺寸较小,可视化效果如图所示。整个过程涵盖了从数据下载到可视化分析的关键步骤。
2025-06-16 00:38:49
358
原创 PMT算法
本文介绍了字符串匹配中的PMT(部分匹配表)算法。首先解释了字符串前缀和后缀的概念,前缀是不包含最后一个字符的子串,后缀是不包含第一个字符的子串。PMT值是字符串前缀集合和后缀集合交集中最长元素的长度。通过PMT可以加速字符串匹配过程,当匹配失败时利用PMT值跳过不必要的比较。文章还介绍了next数组的实现,它是PMT数组向后偏移一位的变体,并提供了Python代码实现。最后给出了完整的KMP算法实现,包括next数组生成和字符串匹配过程。该算法通过预处理模式串构建next数组,优化了字符串匹配效率。
2025-06-15 17:24:40
570
原创 P4:猴痘病识别
● 第三步:通过split()函数对data_paths中的每个文件路径执行分割操作,获得各个文件所属的类别名称,并存储在classeNames中。● 第二步:使用glob()方法获取data_dir路径下的所有文件路径,并以列表形式存储在data_paths中。● 第一步:使用pathlib.Path()函数将字符串类型的文件夹路径转换为pathlib.Path对象。● 第四步:打印classeNames列表,显示每个文件所属的类别名称。数据加载器中,根据数据集文件夹的组织结构,每个文件夹代表一个类别,
2025-05-30 21:39:07
416
原创 P3:Pytorch实现天气识别
对于一般的CNN网络来说,都是由特征提取网络和分类网络构成,其中特征提取网络用于提取图片的特征,分类网络用于将图片进行分类。需要注意的是,上述代码中并没有指定批次的大小,因为这个参数会在。通过对数据图像进行随机变换(如旋转、翻转、剪裁等),增加数据多样性,防止数据过拟合。函数会遍历模型的所有参数,通过内置方法截断反向传播的梯度流,再将每个参数的梯度值设为。中的每个文件执行分割操作,获得各个文件所属的类别名称,并存储在。,即打乱数据集的顺序。,否则的话,有输入数据,即使不训练,它也会改变权值。
2025-05-23 18:46:18
1120
原创 CS1.6Aimbot(瞄准机器人项目跑通)
本文旨在复习并记录跑通“CS1.6-Aimbot”项目的全过程,涵盖数据集准备、模型训练与检测等关键步骤。首先,需下载并解压项目文件夹及Kaggle上的数据集,随后通过Python脚本制作训练和测试数据。模型训练使用Faster-RCNN,通过指定权重、数据集配置、训练轮次和批量大小进行。检测阶段则利用训练好的模型权重对图像或视频进行目标检测。文章还提到在过程中可能遇到的路径问题,建议通过检查文件路径或新建文件夹来解决。整体教程虽不完整,但有助于提升调试能力。
2025-05-23 02:16:17
417
原创 初步实现多轮对话模型
本文介绍了如何通过 openai 库实现与 AI 模型的对话。首先,通过 pip install openai 安装库,并导入必要的模块。接着,配置环境变量,从 DeepSeek 平台获取 API Key 并设置为系统变量。通过实例化 OpenAI 类,调用 chat.completions.create 方法实现单轮对话,传入模型、消息内容和流式参数。AI 的回复以嵌套的 Python 对象形式返回,需逐层解析以获取最终内容。对于多轮对话,需在客户端维护历史记录,将每轮的用户输入和 AI 回复存储到消息列
2025-05-16 22:06:58
1037
原创 P2:CIFAR10彩色图片识别
更具体地说,损失函数loss是由模型的所有权重w经过一系列运算得到的,若某个w的requires_grads为True,则w的所有上层参数(后面层的权重w)的.grad_fn属性中就保存了对应的运算,然后在使用。为全连接层,可以起到特征提取器的作用,最后一层的全连接层也可以认为是输出层,传入参数为输入特征数和输出特征数(输入特征数由特征提取网络计算得到,如果不会计算可以直接运行网络,报错中会提示输入特征数的大小。函数的作用是执行一次优化步骤,通过梯度下降法来更新参数的值。默认值为 1,表示不进行分组卷积。
2025-05-07 00:02:03
993
原创 P1 Pytorch实现mnist手写数字识别
● nn.Linear为全连接层,可以起到特征提取器的作用,最后一层的全连接层也可以认为是输出层,传入参数为输入特征数和输出特征数(输入特征数由特征提取网络计算得到,如果不会计算可以直接运行网络,报错中会提示输入特征数的大小,下方网络中第一个全连接层的输入特征数为1600)步骤:(1)初始化 —> (2)训练模式 —> (3)训练数据 —> (4)评估模式 —> (5)测试数据 —> (6)记录指标 —> (7)打印日志。0 表示数据将在主进程中加载(默认值:0)。
2025-04-28 13:50:34
800
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人