自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 【Flask 进阶】3 从同步到异步:基于 Redis 任务队列解决 API 高并发与长耗时任务阻塞

本文介绍了基于Redis实现的异步任务队列架构,用于解决Flask API在处理长耗时任务和高并发请求时的性能瓶颈。通过将任务拆分为API接收、任务队列、Worker处理三个模块,实现了请求的异步处理。API接收请求后将任务参数存入Redis队列并立即返回任务ID,Worker进程持续监听队列并处理任务,最终将结果存入Redis。用户可通过任务ID查询处理结果。文章详细展示了Flask API、Worker处理程序的具体实现代码,并提供了Redis连接池优化方案,同时指出了JSON序列化方法区别和Redis

2026-02-04 17:15:01 781

原创 【python轻量级Web框架 Flask 】2 构建稳健 API:集成 MySQL 参数化查询与 DBUtils 连接池

本文介绍了Flask框架中实现API授权的三种方式:1)基于文件授权,将用户信息存储在txt文件中进行校验;2)基于数据库授权,使用PyMySQL连接MySQL数据库进行验证;3)使用DBUtils连接池优化数据库访问性能。文章重点分析了SQL注入风险及防范措施,并详细讲解了数据库连接池的工作原理,通过预先创建和复用连接,解决了频繁建立/断开连接导致的性能问题。最后总结了从简单实现到性能优化的完整授权方案演进过程。

2026-02-03 18:23:12 1004

原创 【python轻量级Web框架 Flask 】1 Flask 初识

本文介绍了Python轻量级Web框架Flask的核心特性和快速入门指南。Flask作为微框架,具有轻量灵活、扩展性强等特点,适合中小型项目和AI模型部署。文章详细讲解了Flask的核心组件(路由、视图函数、模板引擎等)和四大应用场景,并通过代码示例演示了如何创建基本网页、处理请求参数(GET/POST/JSON)和文件上传。最后展示了一个API签名生成服务的实现案例,包括MD5加盐加密等安全处理。Flask以其简单易用、生态丰富的特点,成为Python开发者快速构建Web应用的首选工具之一。

2026-02-02 22:20:21 921

原创 【李沐 | 动手学深度学习】10-5 卷积-LeNet

LeNet-5是卷积神经网络的开山之作,由Yann LeCun于1998年提出,最初用于手写数字识别。这个7层网络采用卷积-池化-全连接的经典架构,包含两个卷积层、两个池化层和三个全连接层,使用Sigmoid激活和平均池化。虽然与现代CNN相比结构简单(如使用浅层网络、小数据集),但它确立了CNN的基本范式,包括局部连接、权值共享等核心思想。代码实现展示了其在Fashion-MNIST数据集上的应用,通过GPU训练可获得较好效果。LeNet-5的重要意义在于开创了端到端视觉任务学习的先河,为后续AlexNe

2026-01-22 08:15:00 800

原创 【李沐 | 动手学深度学习】10-4 卷积-池化层

池化层是CNN中的重要组件,用于提升特征的鲁棒性和不变性。主要作用包括:1)通过最大池化或平均池化引入平移、旋转和尺度不变性;2)对特征图进行下采样,降低计算量和内存消耗;3)扩大感受野,整合更全局的上下文信息;4)防止过拟合,增强泛化能力。池化层没有可学习参数,仅对输入特征局部窗口进行运算,输出通道数与输入相同。代码实现中可通过PyTorch的MaxPool2d设置窗口大小、填充和步幅等参数,支持多通道输入单独处理。池化层与卷积层配合使用,共同构成CNN的基础结构。

2026-01-21 15:31:28 882

原创 【李沐 | 动手学深度学习】10-3 卷积层-多通道输入与输出

本文介绍了卷积神经网络中重要的多通道处理机制。对于多输入通道,每个通道使用独立卷积核处理后相加得到单通道输出;多输出通道则通过多个卷积核同时提取不同特征。重点分析了1×1卷积的特殊作用:既能调整通道数、跨通道特征整合,又能大幅降低计算量(通过先降维再升维)。通过代码示例验证了多通道卷积运算的实现,并证明1×1卷积等价于全连接层的矩阵乘法运算。这种机制使网络能高效处理彩色图像等多通道数据,同时提取丰富特征。

2026-01-21 08:15:00 2096

原创 【李沐 | 动手学深度学习】10-2 卷积层-填充与步幅

本文探讨了卷积神经网络中的填充(Padding)和步幅(Stride)两个关键概念。填充通过在输入边缘添加像素(通常为0)来解决三个问题:边缘信息利用不足、特征图尺寸快速收缩以及控制感受野范围,主要分为"Valid"(不填充)和"Same"(保持输入输出尺寸一致)两种模式。步幅则决定卷积核滑动距离,增大步幅能实现下采样和扩大感受野。文章通过PyTorch代码示例展示了不同填充和步幅设置下的卷积操作效果,强调这两个参数在控制输出形状和构建深层网络中的重要作用。

2026-01-20 23:55:08 799

原创 【李沐 | 动手学深度学习】10-1 卷积层-基础

本文探讨了卷积神经网络(CNN)在图像处理中的优势。相比全连接网络,CNN通过局部连接和权值共享显著减少了参数量,同时保留了图像的空间结构信息。文章详细解释了二维交叉相关运算(实际卷积层实现)与数学卷积的区别,并通过代码示例演示了如何手动实现二维卷积操作和学习边缘检测核。CNN利用平移不变性和局部性两大原则,能有效捕捉图像特征,特别适合处理高维感知数据。实验表明,简单的卷积核就能有效检测图像边缘特征。

2026-01-19 08:31:42 1066

原创 【李沐 | 动手实现深度学习】9-2 Pytorch神经网络基础

本文介绍了PyTorch神经网络的两个重要内容:自定义层的实现和模型参数读写。在自定义层部分,展示了无参数层(CenteredLayer)和带参数层(MyLinear)的实现方法,重点说明了参数封装(nn.Parameter)和前向传播计算。在模型读写部分,详细讲解了如何保存和加载张量、字典以及完整的模型参数(state_dict),特别强调了评估模式(eval)对模型推理的重要性。通过实例代码演示了参数保存为.params文件及后续加载使用的完整流程,确保模型可以正确恢复和使用。这些技巧对模型开发和部署具

2025-12-15 16:55:18 1014

原创 【李沐 | 动手实现深度学习】9-1 Pytorch神经网络基础

本文介绍了深度学习中的关键组件层(Layer)和块(Block),以及参数管理方法。层是神经网络的基本运算单元,块是多个层的逻辑组合,它们都继承自PyTorch的nn.Module基类。文章详细讲解了如何自定义块,包括继承nn.Module、初始化父类和实现forward()方法。在参数管理部分,介绍了如何通过state_dict()访问参数,以及参数初始化的多种方法,包括内置初始化和自定义初始化。此这些内容帮助读者从深度学习基础用户进阶为高级用户,掌握模型构建和参数管理的核心外还讨论了参数绑定的实现方式。

2025-12-15 14:44:39 924

原创 【李沐 | 动手实现深度学习】8 实战:Kaggle房价预测

本文介绍了如何应用深度学习技术解决Kaggle房价预测问题。主要内容包括:1) 数据准备:下载并加载数据集,进行初步观察;2) 数据预处理:对连续值进行标准化处理,对离散值进行独热编码;3) 模型训练:使用简单的线性回归模型,采用对数误差损失函数和Adam优化器;4) K折交叉验证:用于模型选择和超参数调整。特别讨论了为什么对数误差比相对误差更适合房价预测问题,包括其尺度不变性、对称性以及对零值的处理优势。整个过程展示了将深度学习理论知识应用于实际问题的完整流程。

2025-12-14 13:59:44 943

原创 【李沐 | 动手实现深度学习】7 数值稳定性 + 模型初始化和激活函数

数值稳定性问题指的是梯度数值过大或过小,而导致这个问题的根本原因在于深层网络中的权重和激活函数导数连乘积累。梯度(Gradient)的数值:这是最直接受影响的数值。权重(Weight)和参数(Parameter)的数值:它影响梯度的连乘项。激活值(Activation)的数值:激活函数的输出值。深度学习的稳定训练,本质是一个“数值守恒问题”。我们希望:前向信号:不变形反向梯度:不变形权重初始化→ 决定“乘数的尺度”激活函数→ 决定“乘数是否系统性 <1”两者缺一不可。愉快的一天又结束了。。。。。

2025-12-13 22:21:59 601

原创 【李沐 | 动手实现深度学习】6 丢弃法(Dropout)

本文介绍了深度学习中的Dropout方法,这是一种通过在训练过程中随机丢弃神经元来防止过拟合的正则化技术。文章从理论层面解释了Dropout的工作原理:通过随机失活部分神经元,迫使网络学习更通用和鲁棒的特征,避免神经元间的过度依赖。在实现方面,详细展示了从零构建Dropout层的方法,并比较了两种网络实现方式(手动实现和PyTorch内置方法)。最后讨论了Dropout的应用场景,指出其更适合全连接层而非卷积层,并阐述了模型容量与正则化的平衡关系。Dropout作为一种高效的正则化手段,能有效提升模型的泛化

2025-12-12 20:43:38 622

原创 【李沐 | 动手实现深度学习】5 权重衰减(L2 正则化)

本文探讨了权重衰减在控制模型复杂度中的应用。通过理论分析指出,模型参数过大易导致过拟合,而权重衰减通过硬性限制(参数范数上限)或柔性限制(L2/L1惩罚项)来约束参数范围。实验部分对比了无权重衰减(训练损失趋零但测试损失高)和有权重衰减(泛化能力提升)的效果,并展示了PyTorch中通过优化器自动实现权重衰减的简洁方法。结果表明,L2正则化能有效控制模型复杂度,提升泛化性能。

2025-11-29 23:54:53 986

原创 【李沐 | 动手实现深度学习】4 模型选择+过拟合与欠拟合

本文探讨了机器学习中的模型选择、过拟合与欠拟合问题。首先介绍了训练误差和泛化误差的概念,通过学生考试的例子形象说明两者的区别。文章详细分析了模型复杂度对拟合效果的影响:简单模型容易欠拟合,复杂模型容易过拟合。为解决数据稀缺问题,介绍了验证集和K折交叉验证方法。通过多项式回归的代码实例,展示了不同复杂度模型的实际表现:三阶多项式正常拟合,线性模型欠拟合,高阶模型过拟合。最后强调机器学习的目标是获得良好泛化能力的模型,需要在模型复杂度和数据复杂度之间找到平衡,并指出深度学习模型往往在训练集上表现更好,需要通过正

2025-11-29 19:54:45 1295

原创 【李沐 | 动手实现深度学习】3 多层感知机(MLP)的实现

本文介绍了多层感知机(MLP)的实现方法。首先阐述了MLP作为基础神经网络模型的特点,包括多层结构、全连接和非线性激活函数。然后详细展示了从零实现MLP与使用PyTorch高级API的简洁实现方式。MLP作为深度学习的基础模型,其原理对理解更复杂网络架构具有重要意义。

2025-11-27 12:11:48 736

原创 Verilog流水线CPU设计_计算机组成原理课程设计-期末大作业

本文介绍了大三计组课程设计的流水线CPU实现项目。项目采用Verilog语言设计5级流水线CPU(IF、ID、EX、Mem、Wr),重点解决了数据冒险和控制冒险问题,实现了11条指令的流水线执行。实验使用QuartusⅡ9.0工具完成综合仿真,最终获得优秀评级。设计包含PC、加法器、指令存储器等模块,并实现了转发功能。项目完整报告包含详细分析,提供有偿咨询服务。

2025-11-26 17:13:32 920

原创 【李沐 | 动手实现深度学习】2 Softmax回归的实现

本文是李沐老师 |【动手学深度学习】课程的动手部分笔记 - 2 Softmax 回归篇。记录使用PyTorch实现Fashion-MNIST图像分类的全过程:包括1) 图片分类数据及 2) Softmax回归 从零实现 3) Softmax回归简洁实现针对课程中主包自身出现的疑问进行讨论并记录,欢迎指正!

2025-11-26 16:10:35 982

原创 【李沐 | 动手实现深度学习】1 线性回归的实现

本文是B站沐神的《动手深度学习课程的学习笔记,介绍了线性回归从零实现和使用PyTorch框架实现的两种方法。从零实现部分详细讲解了数据生成、模型构建、损失函数定义和梯度下降优化过程,针对yield生成器、torch.no_grad()等疑问点进行讨论并记录。框架实现部分展示了如何利用PyTorch的nn模块、DataLoader和优化器简化开发流程,包括数据加载、模型定义、参数初始化和训练循环。通过对比两种实现方式,让初学者了理解底层原理的重要性。

2025-11-25 10:35:09 666

原创 【VMware Workstation Pro 17】 安装【CentOS 7.6】 以及 部署【OpenGauss 6.0 RTC】 超详细实验教程

本文详细记录了关于虚拟机VMware上CentOS 7.6版本操作系统的安装,以及数据库管理系统openGauss 6.0.0 - RCT 的部署 过程

2024-10-16 09:27:19 1848

原创 C++重点(提高)多态与虚函数——深入了解虚函数表与多态

继承、封装、多态是C++的三大特性,而其中多态技术则通过虚函数实现来体现,而虚函数的机理是大多数课程中所不曾涉及的,但是对于虚函数表和多态的掌握,还意味着在实际开发中程序员能充分地利用C++面向对象编程中的多态技术,写出高扩展性以及耦合度较低的优质代码。

2023-10-31 23:25:57 202 1

原创 C与C++(提高)动态内存分配——new(delete)与malloc(free)辨析—超详解

动态创建变量(数组)时即是在堆区进行创建,我们知道,C++中通过new关键字动态开辟空间,使用delete释放;C语言中通过malloc关键字在动态开辟空间,使用free释放.它们之间有何区别,结合自己所学知识并参考了许多博主的文章,讨论C++与C中的动态内存分配区别做出总结。

2023-10-25 13:41:29 989 1

原创 数据结构与算法分析1.2练习:编写一个程序解决字谜问题

数据结构与算法分析中1.2字谜游戏问题,讨论4行4列情况

2023-01-14 20:38:42 391 3

计算机组成原理-课程设计-期末大作业-流水线CPU设计

本文件是主包的大三上课程设计,最终获得优秀评级,自评价做得还不错嘿嘿,如有不足敬请指正! 项目主要内容: 1.1 实验目的 (1)深入理解流水线 CPU 的工作原理,包括指令的取指(IF)、译码(ID)、执行(EX)、访存(Mem)和写回(Wr)五个阶段的协同运作。 (2)掌握如何在硬件描述语言(如 Verilog)中实现流水线 CPU,包括各阶段模块的设计、模块间的数据传递和控制信号的处理。 (3)学习处理流水线中的冒险问题,如控制冒险(分支和跳转指令引起)和数据冒险(load - use 数据冲突),并通过硬件设计进行相应的冒险检测和处理。 (4)培养利用硬件描述语言进行复杂数字系统设计、调试和优化的能力,提升对数字电路和计算机组成原理知识的综合应用水平。 1.2 任务与环境 1.2.1 实验任务 (1)设计并实现一个流水线 CPU 的顶层模块Pipeline_CPU,包含完整的5个流水线阶段以及段寄存器; (2)实现各阶段的功能模块,如 PC(程序计数器)、Adder(加法器)、Instruction_Memory(指令存储器)等; (3)完成流水线冒险检测和处理模块的设计,包括:数据冒险、控制冒险以及结构冒险的,确保流水线的正确运行。 (4)对设计进行综合和仿真,验证其功能的正确性,包括指令的正确执行、冒险处理的有效性等。 最终实现 11 条指令的理想状态下的 5 级流水线,并实现转发功能。 1.2.2 实验环境  硬件描述语言:Verilog  综合工具:如 Quartus Ⅱ 9.0 上面是简单介绍,其余内容都放在实验报告里了,需要自取噢

2025-11-26

推箱子第二次课.pdb

推箱子第二次课.pdb

2022-11-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除