<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Beforthing的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Beforthing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Beforthing]]></copyright><item><title><![CDATA[Pytorch【10】卷积神经网络CNN实战｜卷积、池化、padding、stride，CNN训练MNIST]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/170366158</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/170366158</guid><author>Beforthing</author><pubDate>Mon, 09 Nov 2026 20:38:26 +0800</pubDate><description><![CDATA[上一篇我们用全连接层完成MNIST分类。把28×28二维图像直接Flatten成一维向量，丢失像素之间空间位置关系参数数量巨大，容易过拟合卷积层Conv、池化层Pool、激活函数卷积：滑动卷积核提取局部特征；池化：降采样、压缩特征图，减少计算量。局部感受野：卷积核只看一小块区域，符合图像特征局部相关性权值共享：一张图共用同一套卷积核，大幅减少参数量平移不变性：同一个特征，在图里左右移动依然可以被识别。]]></description><category></category></item><item><title><![CDATA[Pytorch【9】训练+验证完整实战流程｜划分数据集、准确率计算]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/170366114</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/170366114</guid><author>Beforthing</author><pubDate>Mon, 09 Nov 2026 20:37:13 +0800</pubDate><description><![CDATA[前面已经掌握张量、自动求导、网络搭建、损失优化、Dataset/DataLoader、模型保存加载。无法判断模型是否过拟合（训练loss很低，陌生数据效果很差）看不到准确率指标（分类任务最关心acc）没有标准化的epoch循环结构标准流程：训练阶段：开启，前向、反向、更新参数验证阶段：开启，只计算loss和指标，不更新权重一轮结束后打印训练loss、验证loss、验证准确率根据验证指标保存最优模型。]]></description><category></category></item><item><title><![CDATA[Pytorch【8】模型保存与加载（断点续训、GPU/CPU兼容踩坑）]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/170366058</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/170366058</guid><author>Beforthing</author><pubDate>Mon, 09 Nov 2026 20:35:50 +0800</pubDate><description><![CDATA[前面我们已经掌握：张量、自动求导、网络搭建、损失优化、Dataset+DataLoader数据流水线。模型训练好之后，我们需要把成果存下来；训练中途中断，也需要从上次位置继续训练。只保存权重✅【工业界推荐，体积小、灵活】直接保存整个模型❌【简单但不推荐，兼容性差】state_dict是一个字典，key是参数名，value是权重张量，只存参数，不存代码结构。]]></description><category></category></item><item><title><![CDATA[Pytorch【7】Dataset与DataLoader数据集加载]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/169952081</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/169952081</guid><author>Beforthing</author><pubDate>Tue, 03 Nov 2026 22:21:43 +0800</pubDate><description><![CDATA[上一节我们学会了损失函数、优化器和基础训练循环。但是之前示例是手写少量tensor数据，真实项目图片成千上万，需要一套规范的数据加载方案。数据集抽象类，定义怎么拿单条样本（索引取数据）加载器，对Dataset包装，实现batch、shuffle、多进程读取数据流水线：原始数据 → Dataset读取单样本 → Transform预处理 → DataLoader打包成batch送入网络__len__：返回数据集总样本数量，调用：按下标取一个样本，调用。]]></description><category></category></item><item><title><![CDATA[Pytorch【6】损失函数与优化器详解]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/169952006</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/169952006</guid><author>Beforthing</author><pubDate>Tue, 03 Nov 2026 22:16:06 +0800</pubDate><description><![CDATA[前面我们学习了张量、自动求导、nn.Module搭建网络。网络搭好之后怎么训练？输入数据，前向传播得到预测值损失函数：计算预测值和标签之间的误差反向传播，计算参数梯度优化器：利用梯度更新网络权重，减小损失损失函数负责“评判好坏”，优化器负责“怎么调整参数变好”。CrossEntropyLoss 标签不要写成one-hot！BCEWithLogitsLoss > BCELoss，避免数值溢出训练循环顺序：清零梯度 → 前向计算loss → backward → step。]]></description><category></category></item><item><title><![CDATA[Pytorch 【5】神经网络基础（nn.Module、卷积层、池化层、线性层）]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/169155310</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/169155310</guid><author>Beforthing</author><pubDate>Tue, 03 Nov 2026 22:07:51 +0800</pubDate><description><![CDATA[前面我们学习了张量Tensor、自动求导Autograd，这两个是Pytorch最底层的基石。在真实项目中，我们不会手动去写大量求导逻辑，torch.nn模块封装好了神经网络各类层、损失函数，让我们快速搭建网络。本篇重点讲解nn.Module以及常用网络层：卷积Conv、池化Pool、全连接Linear。，和opencv、PIL的HWC相反！卷积之后进全连接，一定要flatten展平，否则维度对不上padding的作用：控制特征图尺寸不变，same padding池化层不改变通道数，只缩小高宽。]]></description><category></category></item><item><title><![CDATA[PyTorch【4】自动求导Autograd详解｜requires_grad、backward、grad、梯度清零]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/168976583</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/168976583</guid><author>Beforthing</author><pubDate>Mon, 26 Oct 2026 12:40:12 +0800</pubDate><description><![CDATA[神经网络训练本质就是：前向计算损失 → 反向求梯度 → 更新参数。PyTorch的Autograd自动求导引擎帮我们自动完成链式求导，不用手写导数。核心概念一句话：只要张量设置，PyTorch会自动构建计算图，调用backward()就能自动算出梯度。]]></description><category></category></item><item><title><![CDATA[PyTorch【3】基础｜Tensor张量详解，张量创建、数据类型与常用操作]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/168976540</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/168976540</guid><author>Beforthing</author><pubDate>Sat, 24 Oct 2026 19:38:10 +0800</pubDate><description><![CDATA[在PyTorch中，所有神经网络的输入、权重、梯度，全部都是Tensor（张量）。0维张量：标量（单个数字）1维张量：向量（一维数组）2维张量：矩阵（二维数组）3维/4维张量：深度学习最常用，比如图像批次、通道、高、宽。]]></description><category></category></item><item><title><![CDATA[PyCharm【2】安装与PyTorch项目配置｜Jupyter Notebook与PyCharm使用对比]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/168976531</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/168976531</guid><author>Beforthing</author><pubDate>Sat, 24 Oct 2026 19:37:11 +0800</pubDate><description><![CDATA[上一篇我们搭建好了Anaconda + PyTorch虚拟环境，但是很多人在命令行里面跑代码没问题，放到PyCharm里就各种报错，本质就是解释器没有选对。同时做深度学习经常会纠结，到底用Jupyter还是PyCharm，本篇一次性讲清楚。Jupyter Notebook 是交互式网页编辑器，后缀.ipynb浏览器会自动打开页面，支持单元格分段运行代码，可以一边写代码、一边看结果、一边写笔记、插入图片公式。PyCharm是IDE，后缀.py脚本文件。]]></description><category></category></item><item><title><![CDATA[PyTorch【1】环境配置与安装 | 解决torch.cuda.is_available()返回False]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/168976514</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/168976514</guid><author>Beforthing</author><pubDate>Sat, 24 Oct 2026 19:35:54 +0800</pubDate><description><![CDATA[很多深度学习入门的第一步就卡在环境安装，尤其是GPU版本PyTorch，经常出现装完之后cuda无法使用的问题。这篇文章从虚拟环境创建、安装命令、验证、排错完整走一遍。]]></description><category></category></item><item><title><![CDATA[NVIDIA GPU架构演进｜Volta、Turing、Ampere、Hopper 到最新Blackwell架构全解析]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/167392217</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/167392217</guid><author>Beforthing</author><pubDate>Fri, 09 Oct 2026 17:11:19 +0800</pubDate><description><![CDATA[上一篇我们讲到Pascal架构，它依靠NVLink、HBM、FP16原生支持，为深度学习打下基础，但还没有专门的矩阵乘硬件单元。从Volta开始，Tensor Core正式登场，GPU进入AI加速黄金时代；后续Turing、Ampere、Hopper持续迭代，直到最新Blackwell架构面向超大模型、多模态与推理场景。Volta：Tensor Core诞生，开启AI混合精度训练时代；Turing：Tensor Core+RT Core，图形与推理双赛道；]]></description><category></category></item><item><title><![CDATA[NVIDIA GPU架构演进｜Fermi、Kepler、Maxwell、Pascal架构详解]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/167391998</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/167391998</guid><author>Beforthing</author><pubDate>Fri, 09 Oct 2026 17:05:30 +0800</pubDate><description><![CDATA[前面我们搞懂了SM、CUDA Core、Grid/Block/Thread、峰值算力计算公式。现在沿着NVIDIA架构发展史，从依次拆解。这四代架构奠定了现代CUDA通用计算基础，从HPC高性能计算起步，一直铺垫到深度学习爆发前夜，Pascal架构更是直接支撑起早期AI训练浪潮。Fermi：开创GPU HPC时代，统一缓存、ECC、FP64，建立现代SIMT基础；Kepler：SMX、Hyper-Q、动态并行，大幅提升能效与多任务并发；Maxwell：SMM微架构优化，精细化功耗控制；]]></description><category></category></item><item><title><![CDATA[GPU基础概念]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/167391769</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/167391769</guid><author>Beforthing</author><pubDate>Fri, 09 Oct 2026 17:00:34 +0800</pubDate><description><![CDATA[前面我们从编程视角学习了CUDA并行、算子映射、计算强度与Roofline模型。本篇我们下沉到NVIDIA GPU硬件本身，理清这些高频硬件名词，打通硬件单元与CUDA软件线程之间的对应关系，最后学会手动计算GPU的理论峰值算力，看懂显卡参数表中的FP32、FP16算力。GPU由多个SM组成；SM是硬件调度单元，SM内部包含大量CUDA Core（SP流处理器）、寄存器、共享内存；CUDA是NVIDIA并行计算平台，采用Host+Device异构编程；]]></description><category></category></item><item><title><![CDATA[GPU AI编程本质]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/167391447</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/167391447</guid><author>Beforthing</author><pubDate>Fri, 09 Oct 2026 16:52:35 +0800</pubDate><description><![CDATA[上一篇我们通过AXPY向量加法例子，理解了CUDA基础并行思想。本篇继续深入GPU AI编程本质，从卷积运算入手，讲解GPU线程分层模型，建立AI算子与GPU线程之间的映射关系，最后引入计算强度与算力利用率，解释为什么矩阵乘法能把GPU算力跑满，而部分算子容易访存受限。卷积是CNN核心算子，输出像素计算互相独立，可以映射到GPU线程；工程上常用Im2Col将卷积转为矩阵GEMM，利用Tensor Core加速；]]></description><category></category></item><item><title><![CDATA[GPU工作原理]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/167390735</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/167390735</guid><author>Beforthing</author><pubDate>Fri, 09 Oct 2026 16:40:51 +0800</pubDate><description><![CDATA[GPU基于SIMT单指令多线程，靠海量轻量级线程实现高吞吐；并发和并行是两个概念，GPU利用并发隐藏访存延迟，多SM实现真正并行；GPU存储分层：寄存器 > 共享内存 > L1/L2 > 全局显存，访存是AI算力最大瓶颈；GPU AI编程本质：CPU负责调度，GPU Kernel定义单线程任务，启动海量线程并行；AX+Y（AXPY）是理解CUDA并行的入门样板，所有矩阵运算、神经网络算子都建立在这个并行思想之上。]]></description><category></category></item><item><title><![CDATA[Linux功耗实战调优：整机耗电异常完整排查手册、工具栈、故障定位流程]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/164066951</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/164066951</guid><author>Beforthing</author><pubDate>Wed, 26 Aug 2026 00:03:29 +0800</pubDate><description><![CDATA[功耗调试最忌讳盲目抓包、到处猜问题。CPU无法进入深休眠C‑StateGPU/DDR等外设频率居高不下外设无法断电休眠(Runtime‑PM失败)整机反复唤醒，不能进入Suspend本篇给出一套分层排查方法论：从上到下，由表及里，从上层现象一直追踪到底层电源域。Thermal温控限制 > PM‑QoS延迟约束 > Wakelock唤醒锁> CPUFreq / CPUIdle / Devfreq调度决策> Runtime‑PM单外设休眠> System‑Suspend整机休眠。]]></description><category></category></item><item><title><![CDATA[Linux Regulator & GenPD深度解析：电压调节器、电源门控、通用电源域、功耗底层开关]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/164066905</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/164066905</guid><author>Beforthing</author><pubDate>Wed, 26 Aug 2026 00:03:05 +0800</pubDate><description><![CDATA[前面CPUFreq、Runtime‑PM只是发出省电请求，本身不能直接关闭硬件电源。Soc内部每一块硬件（CPU、GPU、ISP、NPU）都属于一个独立电源域。电源域由PMIC或者片内电源控制器控制，Linux内核通过Regulator和GenPD框架，间接操控硬件电源。Regulator = 调电压的旋钮GenPD = 电源开关，实现电源门控(Power‑Gating)Regulator是Linux内核管理供电电源的框架，对应硬件上的 LDO、Buck开关电源。开启 / 关闭一路电源。]]></description><category></category></item><item><title><![CDATA[Linux System Suspend & Wakeup‑Source & Wakelock详解：整机休眠流程、频繁唤醒、待机耗电排查]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/164066799</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/164066799</guid><author>Beforthing</author><pubDate>Tue, 25 Aug 2026 23:47:22 +0800</pubDate><description><![CDATA[日常工作经常碰到这类故障：熄屏之后电流居高不下，设备无法休眠，频繁被唤醒。某个Wakeup‑Source持续触发中断Wakelock唤醒锁没有释放，阻止整机挂起驱动没有正确上报唤醒源亮屏运行状态下外设省电熄屏之后整机深度休眠省电。]]></description><category></category></item><item><title><![CDATA[Linux Runtime‑PM 深度解析：运行时设备电源管理、驱动API、休眠流程、功耗异常排查]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/164066776</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/164066776</guid><author>Beforthing</author><pubDate>Tue, 25 Aug 2026 23:42:00 +0800</pubDate><description><![CDATA[System Suspend（整机挂起）：系统熄屏，所有进程冻结，大部分外设断电Runtime‑PM（运行时电源管理）：系统正常运行、没有熄屏休眠的时候，单个外设空闲就可以自行断电休眠。举个例子：手机亮屏运行，但是一段时间没有使用陀螺仪传感器。此时系统不需要休眠，陀螺仪就可以通过 Runtime‑PM 单独下电。Runtime‑PM 的目标：外设不用就断电，降低运行态漏电。]]></description><category></category></item><item><title><![CDATA[Linux PM‑QoS 深度解析：功耗质量服务、延迟约束、阻止深睡、锁频原理、故障排查]]></title><link>https://blog.youkuaiyun.com/Beforthing/article/details/164066736</link><guid>https://blog.youkuaiyun.com/Beforthing/article/details/164066736</guid><author>Beforthing</author><pubDate>Tue, 25 Aug 2026 23:37:08 +0800</pubDate><description><![CDATA[不能让CPU休眠太久，否则唤醒延迟过高，产生卡顿、爆音、丢包。但是CPUIdle、CPUFreq本身只会根据负载做决策，它并不知道上层业务对延迟有多高的要求。于是内核引入PM‑QoS（Power‑Quality of Service，功耗‑质量服务）。业务提出延迟、带宽、频率要求；功耗子系统强制执行该约束，牺牲一部分功耗换取响应速度。]]></description><category></category></item></channel></rss>