自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【深度学习基础篇12】从 GPT 到 DeepSeek:大模型的架构革命与工程美学

本文从 Transformer 演进切入,讲解生成式大语言模型核心原理。大模型本质是自回归文字接龙,依托 Decoder-Only 架构与缩放定律,GPT 路线成为主流。模型训练需经过预训练、SFT 监督微调、RLHF 强化学习三步。以 DeepSeek 为代表的新一代模型,通过MoE 混合专家实现稀疏激活,在提升参数量的同时大幅降低计算量;用MLA压缩 KV Cache 缓解显存压力。此外,RoPE、SwiGLU、RMSNorm 优化模型性能,LoRA 降低微调门槛。

2026-03-18 09:40:49 684

原创 【深度学习基础篇11】从CT影像到医学报告:用BART实现医学文本生成的工程实践

本文介绍了一个基于BART模型的医学影像报告自动生成系统。该系统通过深度学习技术,将CT影像的结构化编码序列转换为自然语言的医学诊断报告,旨在解决传统医学报告撰写效率低、标准化不足等问题。文章详细解析了项目的数据格式、预处理流程和核心技术选型,重点阐述了如何利用序列到序列模型实现从医学编码到专业报告的智能生成。系统采用预训练的中文BART模型进行微调,通过编码器-解码器架构理解医学影像特征并生成符合规范的诊断结论,为提升医疗工作效率和基层诊断水平提供了AI解决方案。

2026-03-18 09:31:28 505

原创 【深度学习基础篇10】BERT 文本分类实战:酒店评价情感分析全流程详解

本文针对酒店评价文本开展情感分类实战,采用 bert-base-chinese 预训练模型构建分类网络,通过 PyTorch 实现数据预处理、模型微调、训练验证与模型保存全流程。文章详细解释各模块作用与关键代码细节,包括 BERT 表征、分类头输出、损失计算与准确率评估,形成一套可直接运行、易于扩展的中文情感分析工程范式。

2026-03-11 23:13:29 531

原创 【深度学习基础篇09】NLP 核心模型精讲:词嵌入、RNN、LSTM、Transformer 与 BERT

本文系统梳理了从传统文本表示到预训练模型的完整演进路线,依次讲解词嵌入、RNN、LSTM、自注意力机制、Transformer 与 BERT 模型。内容由浅入深,用通俗语言拆解核心原理与结构,包含直观图解与关键公式,清晰说明各模型的优缺点、适用场景与进化逻辑。文章兼顾基础入门与实战理解,帮助读者快速掌握现代 NLP 发展脉络,适合深度学习初学者学习与复习使用。

2026-03-01 23:21:36 1468

原创 【深度学习基础篇08】深度学习与特征:从编码压缩到高效提取

深度学习的核心,是把原始数据编码、压缩、提炼成高维特征向量,再用这些特征完成分类、生成、检测等任务。本文从有监督、无监督、自监督三大范式出发,讲解模型如何自动学习有效特征,并详细介绍 GAN、扩散模型、CycleGAN、对比学习、自编码器等经典特征学习方法,以及它们在食物分类、图像转换、风格迁移等场景的实际应用,最终带你理解:什么是好特征,以及如何让模型学到好特征。

2026-03-01 16:11:37 933

原创 【深度学习基础篇07】食物分类项目全解析:从自定义模型到预训练微调

本文作为「深度学习基础篇」第 7 篇,以 food-11 食物分类为实战场景,完整讲解了图像分类项目从 0 到 1 的全流程:从基础包导入、按类别读取数据集、定义数据增广策略,到自定义 CNN 模型搭建、训练验证函数编写,再到迁移学习的核心应用(ResNet18 从零训练 vs 预训练微调),最后通过工程化封装实现多模型一键切换。文章不仅拆解了小数据集下 CNN 训练的核心痛点,还提供了完整可复用的代码框架,读者可直接将该框架迁移至花卉分类、宠物识别等任意图像分类任务,兼具入门学习与实战落地价值。

2026-02-27 17:56:46 949

原创 【深度学习基础篇06】从原理到代码:AlexNet/VGGNet/ResNet 逐行拆解与实现

本文为深度学习基础实战篇,承接上一篇经典卷积神经网络(AlexNet、VGGNet、ResNet)的原理讲解,聚焦三大网络的 PyTorch 模拟实现代码。全文以逐行拆解的方式,详细解析每段代码的设计逻辑、层参数含义、前向传播流程,重点突破残差连接、BN 层、1×1 卷积、模块化构建等核心难点,同时纠正入门常见误解,补充代码优化建议。文章兼顾理论衔接与实战落地,通过代码对应原理的方式,帮助深度学习入门者吃透经典网络的实现细节,将抽象的 CNN 原理转化为可运行、可理解的代码,夯实深度学习实战基础。

2026-02-23 15:54:59 843

原创 【深度学习基础篇05】从AlexNet到ResNet:经典卷积神经网络的演进

本文系统梳理深度学习史上三大里程碑式卷积神经网络:AlexNet、VGGNet、ResNet的演进脉络。从AlexNet四大创新点(ReLU、Dropout、重叠池化、归一化)出发,讲解现代CNN的基础设计范式;再深入VGGNet极简结构与感受野原理;最后重点解析ResNet残差连接,破解深层网络“退化”与梯度消失难题。文末附带VGG16维度与参数量实战计算练习,帮助读者巩固卷积、池化、全连接层的核心计算逻辑,适合深度学习入门者系统掌握经典网络原理。

2026-02-23 14:45:28 790

原创 【深度学习基础篇04】从回归到分类:图像分类与卷积神经网络入门

本文从深度学习中回归任务与分类任务的核心区别入手,详细讲解了如何从全连接网络过渡到处理图像的卷积神经网络。文章先介绍图像在神经网络中的表示形式(通道、高度、宽度),再深入解释卷积、卷积核、感受野、步长、填充、池化等关键概念,并给出卷积输出尺寸与参数量的计算公式与实战例题。同时针对初学者常见疑问,清晰区分卷积与池化的不同作用,最后手把手带大家搭建一个简易 CNN 结构,完整展示从3×224×224图像到类别预测的全过程。本文理论通俗、计算清晰,适合深度学习入门者系统理解图像分类与卷积的底层逻辑。

2026-02-23 00:10:25 1788

原创 【深度学习基础篇03】激活函数详解:从生物突触到非线性注入

本文作为深度学习基础篇的核心章节,从生物神经元的 “阈值判断” 机制出发,系统解析了激活函数的核心作用 —— 为神经网络注入非线性,打破 “线性陷阱”。文章通过数学推导直观证明了无激活函数的多层网络等价于单层网络,随后详细介绍了 Sigmoid 与 ReLU 两种经典激活函数的原理、优缺点及适用场景。为了让读者更好地理解,文中还提供了完整的 PyTorch 代码实战,通过对比 “无激活函数”“Sigmoid 激活”“ReLU 激活” 三种网络对非线性函数 y=x3+2x2 的拟合效果,直观展示了激活函数如何

2026-02-22 17:41:01 667

原创 【深度学习基础篇00】什么是深度学习?从单神经元到张量运算的入门全解

本文作为深度学习基础篇的开篇第 0 章,从 “定义模型→定义损失→优化参数” 的核心三步法出发,系统拆解了深度学习的本质逻辑。文章从神经网络的输入输出形式入手,逐步过渡到从单神经元标量运算到复杂网络张量运算的升级过程,重点讲解了张量维度定义、核心匹配规则与运算法则,帮助读者建立从 “黑盒子” 到可理解的深度学习认知框架,为后续激活函数、卷积神经网络等进阶内容打下坚实基础。

2026-02-22 16:44:38 1107

原创 【深度学习基础篇02】手算卷积神经网络:13道经典题全解析

摘要:卷积手算是深度学习入门、考研复试、算法面试的高频考点,很多人容易在通道数、padding计算上踩坑!本文整理13道经典手算题(从单通道到多通道,循序渐进),先自测再详解,标注易错点+关键步骤,总结万能公式,帮你快速吃透卷积计算,复盘记忆、直接备考套用都合适!卷积神经网络(CNN)的核心基础的是卷积计算,而手算卷积尺寸、参数量,是理解CNN原理、应对考研复试提问、算法面试笔试题的关键。

2026-02-21 15:28:25 907

原创 【深度学习基础篇01】线性回归代码解析

本文实现了一个简单的线性回归模型,通过PyTorch框架完成数据生成、模型训练和结果可视化。首先使用create_data函数生成500个带噪声的线性数据样本,其中权重true_w=[8.1,2,2,4],偏置true_b=1.1。然后定义data_provider函数实现批量数据加载,采用随机打乱索引的方式避免过拟合。模型训练过程包含预测函数fun、MAE损失函数maeLoss和随机梯度下降优化器sgd,通过50轮迭代更新参数。最终对比显示训练得到的参数w_0和b_0接近真实值,并通过matplotlib

2026-02-20 01:48:55 1169

原创 【Linux】C文件系统详解(四)——磁盘的物理和抽象结构

正确的做法:什么都不要干,使用某种软件找到这个文件的inode编号,首先在分组中对应的inodebitmap对应位置置为1,再查找inode表对应的数据块bitmap置为1,然后查找数据块,就能恢复出来了。举个例子,一个分区内,有100个分组,每个分组有100个inode编号,当inode是250号的时候,我们就能推算出他是在第三组的。一个文件的内容是变化的,我们是用数据块来进行文件内容的保存的,所以一个有效文件,要保存内容,就需要[1,n]个数据块。

2023-11-20 10:15:54 443

原创 【Linux】C文件系统详解(三)——如何理解缓冲区以及自主封装一个文件接口

所以真正的调用顺序应该是:在fork之前,write就直接打印进文件了,但是fwrite只是写在缓冲区中.在fork之后,fwrite的缓冲区中的文件变成了两份(写时拷贝),由此,会出现打印两次的现象.(下图中有解释)在你进行fopen打开文件的时候,会得到一个FILE结构体,缓冲区就在该结构体中。以前写过一个进度条, 有一个输出缓冲区->这个缓冲区在哪里,为什么要存在。而调用write时,是系统调用,没有缓冲区,会直接刷新出来。1.历史上我们所谈的缓冲区指的是:用户级缓冲区,语言提供。

2023-11-19 12:00:00 441

原创 【Linux】C文件系统详解(二)——什么是fd文件描述符以及理解“一切皆文件“

进行操作系统的访问,在进程的角度,只能看到文件对象,而看不到底层的设备的区别,所以我们才说"Linux下一切皆文件".在上层无法感知的情况下,在OS内部,更改进程对应的文件描述符表中,特定下标的指向!所以stdout cout->1,他们都是向1号文件描述符对应的文件打印。stderr cerr ->2 ,他们都是向2号文件描述符对应的文件打印。任何一个进程,在启动的时候,默认会打开当前进程的三个文件。把fd为3的文件关闭以后,新的文件fd应该是什么。最小的,没有被使用的数组元素,分配给新文件。

2023-11-18 12:00:00 1112

原创 【Linux】C文件系统详解(一)——C文件操作

1.文件描述符,重定向,缓冲区,语言和系统关于文件的不同的视角的理解 – 都是要让我们深刻理解文件2.文件系统3.动静态库 – a.制作者的角度 b.站在使用者的角度 c.如何理解动态库加载(进程地址空间的内容)

2023-11-17 16:59:32 646

原创 【Linux】进程程序替换

用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用成功时则不返回,因为此时已经替换了,后续的代码已经没有意义了,没有必要返回值了.(成功了就和接下来的代码无关了)带p字符的函数,不用告诉我程序的路径,你只要告诉我程序的名字,我会自动在环境变量PATH中进行可执行程序的查找.将指定的程序加载到内存中,让制定进程进行执行。

2023-11-08 10:33:13 202

原创 【Linux】进程等待

(通过kill -l进行对应数字的查看(比如发生段错误,除0操作等)),此时退出码是否为0或者是其他的,都无意义,我们不讨论它.2.张三->李四,本质是状态检测,如果没有就绪,直接返回->每一次都是一次非阻塞等待->多次非阻塞等待我们称为:轮询。2.wait/waitpid是一个系统调用->OS->OS有资格也有能力去读取子进程的task_struct。wait和waitpid,都有一个status参数,该参数是一个输出型参数,由操作系统填充。否则,操作系统会根据该参数,将子进程的退出信息反馈给父进程。

2023-11-03 11:30:00 168

原创 【Linux】进程地址空间

如果让进程之间访问物理内存,进程可能越界非法操作,非常不安全地址空间的存在,可以更方便的进行进程和进程的数据代码的解耦,保证了进程独立性这样的特征让进程以统一的视角,来看待进程对应的代码和数据各个区域,方便使用编译器也以统一的视角来编译代码(规则是一样的,编完以后即可直接使用)

2023-11-02 11:30:00 149

原创 【Linux】进程创建

当一个进程调用fork之后,就有两个二进制代码相同的进程。所以,fork之前父进程独立执行,fork之后,父子两个执行流分别执行。注意,fork之后,谁先执行完全由调度器决定。通常,父子代码共享,父子再不写入时,数据也是共享的,当任意一方试图写入,便以写时拷贝的方式各自一份副本。在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。一个父进程希望复制自己,使父子进程同时执行不同的代码段。例如,父进程等待客户端请求,生成子进程来处理请求。

2023-11-02 11:30:00 151

原创 【Linux】进程终止

2.可以使用。

2023-11-02 11:30:00 276

原创 【Linux】环境变量

bash就是一个系统进程,mycmd也会变成一个进程,是bash的子进程->环境变量具有全局属性是因为会被子进程继承下去->为什么呢:为了不同的应用场景–让bash帮我们找指令路径,身份认证。环境变量中的每一个,都有自己的用途:有的是进行路径查找的,有的是进行身份认证的,有的是进行动态库查找的,有的是用来进行确认当前路径的等等->每一个环境变量都有自己的特定应用场景。)的表,这张表由用户在登陆系统时,进行给特定用户形成属于自己的环境变量表。.和source是一样的,就是让后面跟着的环境变量立马生效。

2023-11-01 11:30:00 171

原创 【Linux】进程状态与进程优先级及其相关概念

>阻塞一定是在等待某种资源->为什么要阻塞:进程要通过等待的方式,等具体的资源(磁盘\网卡\显卡等各种外设)被别人使用完之后,再被自己使用.挂起:全程阻塞挂起.当操作系统的内存不足时,操作系统会把正在被阻塞中的进程,包括它的代码和数据,交换给磁盘.(但是PCB还在内存中)因为这个速度快慢是相对于cpu来说的,显示器的响应是很慢的,我们在等待IO,而且是99%的时间都在等待,只有1%的时间在运行。在该状态的进程,无法被OS杀掉,只能通过断电,或者进程自己醒来来解决->在高IO的情况下,才会出现。

2023-10-31 11:30:00 207

原创 【Linux】冯诺依曼体系结构以及初始操作系统

计算机管理硬件描述起来,用struct结构体组织起来,用链表或其他高效的数据结构。

2023-10-30 20:40:53 254

原创 【Linux】文件权限、目录权限、掩码、粘滞位以及相关指令

权限是约束人的(一个或者是某些群体)目标对象(电影网站,音乐app等),本来就没有对应的属性(业务)权限:一件事情是否允许被谁做文件权限=人+文件属性目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。

2023-10-22 12:00:00 700

原创 【Linux】基本操作指令汇总(不完全)

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel) “ ,但我们一般用户,不能直接使用kernel. 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。操作系统存在的意义:操作系统对软硬件进行合理管理(手段),以达到为上层用户提供良好的、稳定的、安全的运行环境的目的(目的)。

2023-10-21 13:58:49 377

原创 【Cpp】哈希之手撕闭散列/开散列

底层是哈希表,迭代器遍历是无序的,是单向迭代器其他的用法和map,set没有什么区别unordered_map是存储键值对的关联式容器,其允许通过keys快速的索引到与其对应的value。在unordered_map中,键值通常用于唯一地标识元素,而映射值是一个对象,其内容与此键关联。键和映射值的类型可能不同。

2023-05-24 21:29:41 1154

原创 【日常刷题】两个数组的交集

先去重,后求交集去重我们可以使用sortunique进行去重也可以直接使用set进行排序+去重一步到位。

2023-04-28 08:30:00 261

原创 【Cpp】前K个高频单词-排序的稳定性

set本身也可以排序,只不过也需要我们自己写一个仿函数。直接将sort换成stable_sort就可以了。但是这样写是不能通过的,因为sort的排序是。我们可以直接先将每个单词出现的次数用一个。改写一下仿函数的书写规则。统计出来,然后放入一个。

2023-04-27 09:49:53 588

原创 【Cpp】set\map详解(关联式容器)

根据应用场景的不同,STL总共实现了两种不同结构的管理式容器:树型结构与哈希结构。树型结构的关联式容器主要有四种:map、set、multimap、multiset。这四种容器的共同点是:使用平衡搜索树(即红黑树)作为其底层结果,容器中的元素是一个有序的序列。下面一依次介绍每一个容器.kw=setset是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。

2023-04-26 08:30:00 1565

原创 【数据结构】非递归前序访问二叉树

【代码】【数据结构】非递归前序访问二叉树。

2023-04-25 08:30:00 258

原创 【日常刷题】从前序和中序遍历构造二叉树

相信大家已经做了很多类似的选择题了,就是把根据前序和中序或者根据中序和后序构造出原来的树(注意:不能够根据前序和后续复原,必须要有一个中序)具体的做法就是我们根据前序或者后序可以却确定一个数的根(最左或者最右),然后根据中序来划分左右子树,接下来再继续递归进行,链接左子树和右子树。给出一棵树的前序遍历和中序遍历,请构造这颗二叉树。对前序进行遍历,注意,为了保证整个函数中只有一个。(别名),来保证previ可以遍历所有的前序数组。我们设置一个新的变量。

2023-04-24 08:30:00 211

原创 【Linux】命名管道使用示例-代码实现

要使用管道进行通信,我们需要两个"人",一个是客户端,一个是服务器.且为了方便代码的编写,我们将两者公用的结构体和头文件放在同一个。该文件拥有者所在组的其他成员对该文件拥有读写的权限但是没有操作的权限。其他用户组的成员对该文件也拥有读写权限但是没有操作的权限。该文件拥有者所在组的其他成员对该文件拥有读写操作的权限。可以看到,其实就是一个无符号整型,不过系统帮我们封装了。该文件拥有者对该文件拥有读写的权限但是没有操作的权限。其他用户组的成员对该文件也拥有读写操作权限。该文件拥有者对该文件拥有读写操作的权限。

2023-04-23 08:30:00 1489 1

原创 【Linux】共享内存(shm)代码实现

共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据其中,pathname是路径字符串,proj_id是项目id这两个参数都可以随便书写,没有任何意义,只不过要保证不同的shm空间,这两个参数一定是不完全相同的.public :} else {int type;

2023-04-22 08:30:00 2009

原创 【日常刷题】根据二叉树创建字符串

给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。空节点使用一对空括号对 “()” 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。

2023-04-21 08:30:00 102

原创 【Cpp】手撕搜索二叉树(KV模型)

问题:如果退化成单支树,二叉搜索树的性能就失去了。那能否进行改进,不论按照什么次序插入关键码,二叉搜索树的性能都能达到最优?那么我后续即将介绍的。对有n个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索树平均查找长度是结点在二叉搜索树的深度的函数,即结点越深,则比较次数越多。由于我的上一篇文章详细介绍了K模型的书写,KV模型与K模型的代码书写方面是别无二致的,只需要对于增操作多加一个value值即可.,查找效率代表了二叉搜索树中各个操作的性能。

2023-04-20 08:30:00 522

原创 【Cpp】手撕搜索二叉树(K模型)

/定义左子树 BSTreeNode < k > * right;//定义右子树 k _key;//存储关键码 BSTreeNode(const k & key) //构造函数 : _key(key) , _left(nullptr) , _right(nullptr) {} }上面我们已经把每个结点的结构定义出来了//将结点名字重新命名,方便后续写代码 public :这篇文章写的都是搜索二叉树的K模型.关于KV模型的代码手撕将在下一篇文章中,到时候查看我所写的博客即可.

2023-04-19 08:30:00 745

原创 【日常刷题】迷宫问题

定义一个二维数组 N*M ,如 5 × 5 数组下所示:它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的路线。入口点为[0,0],既第一格是可以走的路。

2023-04-18 08:30:00 988

原创 【日常刷题】年终奖

小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要从左上角开始游戏,每次只能向下或者向右移动一步,到达右下角停止,一路上的格子里的礼物小东都能拿到,请设计一个算法使小东拿到价值最高的礼物。给定一个6*6的矩阵board,其中每个元素为对应格子的礼物价值,左上角为[0,0],请返回能获得的最大价值,保证每个礼物价值大于100小于1000。

2023-04-17 12:02:25 216

空空如也

空空如也

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

TA关注的人

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