深度学习复习指南:从张量到部署的核心基础与实战要点
1. 为什么“复习”深度学习比“学”深度学习更让人头疼如果你问一个刚入门深度学习的人最怕什么十有八九会告诉你“公式推不动”或者“代码跑不通”。但如果你问一个已经做过几个项目、调过几轮模型的人最怕什么答案往往出人意料——怕被问到最基础的概念。这不是玩笑。我带过不少刚入行的朋友也跟一些工作了三五年的同行聊过大家有个共同感受真正让你在技术讨论中卡壳的不是那些花哨的注意力机制变体而是“卷积核到底在滑什么”“反向传播的链式法则为什么能成立”“Batch Normalization在推理阶段到底怎么算”这类看似简单的问题。这个现象背后有个很实在的原因深度学习的知识结构是“倒金字塔”型的。入门时你只需要知道“搭个网络、跑个训练、看个准确率”就能交差但越往上走你越需要回头去补底层逻辑。比如你调一个图像分类模型发现验证集准确率死活上不去这时候如果对“感受野”“特征图尺寸变化”“梯度消失”这些基础概念没有清晰的物理直觉你连该往哪个方向调都不知道。所以“复习”这件事本质上不是重复记忆而是把零散的操作经验重新挂到一根逻辑主线上。我写这篇内容的出发点很直接假设你已经接触过深度学习能跑通一些Demo甚至做过一两个小项目但总觉得知识是散的面试被问深一点就心虚看论文时对某些步骤的来龙去脉说不清楚。那接下来的内容就是为你准备的。我会按照“从数据到模型再到训练”的完整链路把那些最容易被忽略但最影响实战判断的基础点拆开讲每个点都配上“为什么这么设计”和“实际中怎么用”的说明。不堆公式不抄教科书只讲一个从业者回头看时觉得真正有用的东西。2. 从张量到计算图数据是怎么在网络里“流动”的2.1 张量的本质不是“多维数组”而是“带语义的容器”很多人第一次接触张量时会把它简单理解成“多维数组”这个理解在写代码时够用但在排查问题时不够用。举个实际例子你拿到一个形状为(32, 3, 224, 224)的张量如果只把它当成四维数组你可能会忽略“32是批量大小、3是通道数、224是空间尺寸”这层语义。而一旦训练时出现形状不匹配的报错你首先需要判断的是是批量维度对不上还是通道维度对不上这时候“语义”比“形状”更重要。我习惯把张量理解成一个带标签的数据容器。每个维度都有明确的物理含义批量维度代表“这次处理多少个样本”通道维度代表“每个样本有多少个特征图”空间维度代表“特征图在二维平面上有多大”。这种理解方式在调试时特别管用。比如你发现某个中间层的输出形状突然从(32, 64, 56, 56)变成了(32, 128, 28, 28)你立刻能反应过来通道数翻倍、空间尺寸减半这大概率是一个步长为2的卷积层或者池化层在起作用。注意张量的“语义”不是框架强加的而是你在设计网络时赋予的。所以每次写模型定义时最好在注释里标清楚每个维度的含义尤其是自定义层比较多的时候。2.2 计算图前向传播时到底在“记”什么计算图这个概念很多教程讲得太抽象。我用一个具体场景来说明。假设你定义了一个简单的全连接网络输入x经过Linear1得到h1再经过激活函数ReLU得到a1最后经过Linear2得到输出y。当你执行前向传播时框架做的事情远不止“算出一个结果”。它同时在后台记录了一张图x和W1怎么组合成h1h1怎么经过ReLU变成a1a1和W2怎么组合成y。这张图里的每个节点都知道“我的输入是谁”“我做了什么运算”“我的输出给了谁”。为什么要记这些因为反向传播需要它。反向传播的本质是沿着计算图反向走一遍用链式法则把损失对每个参数的梯度算出来。如果没有这张图框架就不知道W1的梯度该从哪条路径回传。所以你可以把计算图理解成“前向传播时留下的路标”反向传播时顺着路标往回走就行了。这里有个实际中容易踩的坑如果你在训练循环里不小心把某个中间变量转成了NumPy数组计算图就断了。比如你写loss_np loss.detach().numpy()然后试图用loss_np去做反向传播框架会直接报错因为它找不到从loss_np到参数的路径。这个错误在新手里很常见尤其是需要打印损失值的时候。正确的做法是打印时用loss.item()这样只取数值不破坏计算图。2.3 动态图与静态图的取舍为什么现在主流框架都选动态图早期的一些框架采用静态图模式你先定义好整张计算图编译之后才能喂数据运行。这种方式的好处是图固定了框架可以做很多优化比如算子融合、内存复用推理效率高。但缺点也很明显调试困难。你想在中间打印一个张量的值得专门插入一个打印节点然后重新编译整张图非常麻烦。现在主流的框架基本都采用动态图模式你写一行代码它就执行一行计算图是边跑边建的。这种方式最大的好处是调试直观。你可以像写普通Python程序一样在任意位置打断点、打印值、甚至用条件判断控制流程。比如你想实现一个“如果某个条件成立就跳过某一层”的逻辑动态图下直接写if语句就行静态图下就得用特殊的控制流算子。当然动态图也不是没有代价。因为图是动态建的框架没法提前做全局优化所以训练时的速度可能比静态图慢一些。不过现在很多框架都提供了“动态图调试、静态图部署”的混合方案训练时用动态图方便调试训练完成后把模型导出成静态图用于推理兼顾了两边的优势。这个思路在实际项目中很实用尤其是需要把模型部署到性能受限的环境时。3. 反向传播的链式法则为什么梯度能“一层一层传回去”3.1 用一个两层网络把链式法则“手算”一遍链式法则的公式看起来简单如果y f(g(x))那么dy/dx dy/dg * dg/dx。但放到神经网络里很多人就晕了。我用一个最小的例子来拆解。假设网络只有两层没有激活函数损失函数是均方误差第一层h W1 * x b1第二层y W2 * h b2损失L (y - t)^2其中t是真实值现在要算L对W1的梯度。按照链式法则路径是L对y求导y对h求导h对W1求导然后三者相乘。具体来说dL/dy 2(y - t)dy/dh W2dh/dW1 x所以dL/dW1 2(y - t) * W2 * x。这个结果说明一个关键点W1的梯度里包含了W2的信息。也就是说后面层的权重会影响前面层权重的更新方向。这就是为什么反向传播是“从后往前”算的——你必须先知道后面层的梯度才能算前面层的。实际中网络有几十上百层手动展开不现实但原理完全一样。框架做的事情就是自动沿着计算图反向遍历每遇到一个节点就应用对应的链式法则把梯度一步步传回去。你不需要手算但理解这个过程能帮你判断“梯度消失”或“梯度爆炸”发生在哪一段。3.2 梯度消失与梯度爆炸从链式法则的“连乘”说起链式法则有个特点梯度是一路乘过去的。如果每一层的局部梯度都小于1那么乘了十几层之后梯度就会变得非常小这就是梯度消失。反过来如果每一层的局部梯度都大于1乘多了就会变成天文数字这就是梯度爆炸。为什么Sigmoid激活函数容易导致梯度消失因为Sigmoid的导数最大值只有0.25。也就是说每经过一个Sigmoid层梯度至少缩小到原来的四分之一。十层之后梯度就变成了原来的0.25^10大约是百万分之一。这个量级下前面层的参数基本收不到有效的更新信号。ReLU激活函数之所以能缓解这个问题是因为它在正区间的导数恒为1。梯度经过ReLU时不会缩小可以比较顺畅地传回去。但ReLU也有自己的问题负区间的导数为0如果某个神经元的输入长期为负它的梯度就永远是0这个神经元就“死”了。实际中常用LeakyReLU或者ELU来缓解它们在负区间给一个很小的斜率保证梯度不会完全断掉。提示如果你在训练一个深层网络时发现前面几层的权重几乎不变而后面几层正常更新大概率是梯度消失。可以先检查激活函数的选择再考虑加Batch Normalization或者用残差连接。3.3 梯度检查怎么确认自己写的反向传播是对的如果你用框架的自动求导一般不需要自己写反向传播。但如果你在实现自定义层或者自定义损失函数就需要验证梯度算得对不对。这时候可以用数值梯度检查对某个参数加上一个极小的扰动ε计算损失的变化然后除以ε得到数值梯度再和反向传播算出的解析梯度对比。如果两者非常接近相对误差在1e-6量级说明反向传播实现正确。这个技巧在实际中很有用。我曾经实现过一个自定义的损失函数前向传播结果看起来没问题但训练时损失死活不下降。后来用数值梯度检查发现反向传播里有一个符号写反了。修正之后训练立刻正常。所以如果你在自定义算子时遇到“前向对、反向错”的情况优先怀疑梯度计算用数值检查快速定位。4. 卷积与池化图像任务里最核心的两个操作4.1 卷积核到底在“滑”什么从感受野说起卷积操作的本质是用一个固定大小的窗口在输入特征图上滑动每次滑动时计算窗口内元素与卷积核权重的加权和。这个描述听起来简单但实际理解时需要抓住两个关键点感受野和权重共享。感受野指的是输出特征图上的一个像素对应输入特征图上的多大区域。比如一个3x3的卷积核输出上的一个像素是由输入上3x3的区域计算出来的所以感受野是3x3。如果你堆叠两层3x3卷积第二层输出上的一个像素对应第一层输出上的3x3区域而第一层输出上的每个像素又对应原始输入上的3x3区域所以第二层输出对原始输入的感受野是5x5。这个规律可以推广n层3x3卷积的感受野是(2n1) x (2n1)。为什么要关心感受野因为它决定了网络能“看到”多大的上下文。如果你的任务需要识别大物体感受野就必须足够大否则网络只能看到物体的局部无法判断整体类别。实际中常用两种方式增大感受野一是堆叠更多卷积层二是使用空洞卷积在卷积核元素之间插入空隙。空洞卷积的好处是不增加参数量的同时扩大感受野在语义分割任务里很常用。权重共享是卷积的另一个核心特点。同一个卷积核在整张特征图上滑动意味着无论物体出现在图像的哪个位置用的都是同一组权重。这带来了两个好处一是参数量大幅减少一个3x3卷积核只有9个参数全连接层可能需要成千上万个二是带来了平移不变性物体稍微移动一下卷积的输出模式基本不变。这个特性对图像任务非常关键因为图像里的物体本来就可能出现在任意位置。4.2 池化的作用与替代方案为什么现在有些网络不用池化了池化层最常见的两种是最大池化和平均池化。最大池化取窗口内的最大值平均池化取平均值。它们的作用主要有两个一是降低特征图的空间尺寸减少后续计算量二是增加一定程度的平移不变性因为窗口内的小幅移动不会改变最大值或平均值。但池化也有一个明显的缺点它会丢失空间位置信息。最大池化只保留窗口内的最大值其他值直接丢弃。对于分类任务来说这个信息损失通常可以接受因为分类只需要知道“有没有某个特征”不需要知道“特征具体在哪”。但对于分割、检测这类需要精确定位的任务池化带来的信息损失就可能影响性能。所以现在很多网络设计开始用步长卷积来替代池化。步长卷积就是卷积核滑动时每次移动不止一个像素比如步长为2时输出特征图的空间尺寸就减半。这样做的好处是降采样的过程也参与学习网络可以根据任务需要决定保留哪些信息。比如在图像分割任务里用步长卷积替代池化后边缘细节的保留明显更好。注意池化层没有可学习的参数所以如果你用池化降采样这部分计算量是固定的。而步长卷积有参数会增加一些计算量但换来的是更强的表达能力。实际选型时需要在精度和速度之间权衡。4.3 卷积的输出尺寸计算一个必须刻在脑子里的公式卷积输出尺寸的计算公式是输出尺寸 (输入尺寸 - 卷积核尺寸 2 * 填充) / 步长 1。这个公式看起来简单但实际中经常有人算错。我见过不少人在设计网络时凭感觉设置参数结果跑到某一层突然报形状不匹配的错误。举个例子输入是224x224卷积核3x3填充为1步长为1。代入公式(224 - 3 2*1) / 1 1 224。也就是说这个配置下输出尺寸和输入一样。这就是为什么3x3卷积配填充1被称为“保持尺寸的卷积”。如果你把步长改成2输出就变成(224 - 3 2) / 2 1 112尺寸减半。实际设计网络时我习惯在每一层旁边标注输入输出尺寸尤其是降采样层。这样一旦后面出现形状错误可以快速定位是哪一层的问题。另外填充的作用是控制输出尺寸同时也会影响边缘信息的保留。填充为0时边缘像素参与卷积的次数少边缘信息容易丢失填充为1时边缘像素被“补了一圈”参与次数增加边缘信息保留更好。5. 训练过程中的那些“玄学”学习率、批大小与归一化5.1 学习率为什么它是最重要的超参数如果只能调一个超参数那一定是学习率。学习率决定了每次参数更新的步长。步长太小训练慢可能几百个epoch都收敛不了步长太大参数更新过猛损失可能震荡甚至发散。实际中常用的策略是学习率预热加衰减。预热就是在训练刚开始的几百步里让学习率从很小的值逐渐增加到设定的初始值。为什么要预热因为训练初期参数是随机初始化的梯度可能很大如果直接用大学习率参数一下子被更新到很远的地方可能直接跑飞。预热让模型先“稳一稳”再加速。衰减则是在训练中后期逐渐减小学习率。因为接近收敛时参数已经在一个比较好的位置附近需要更小的步长来精细调整。常用的衰减方式有按步衰减、余弦衰减等。余弦衰减的特点是学习率按照余弦曲线从初始值降到0实际中用得比较多因为它在训练中期保持较大的学习率后期快速下降收敛效果通常不错。提示如果你不确定学习率设多少可以从1e-3开始试。如果损失震荡降到1e-4如果损失下降太慢升到1e-2。另外使用自适应优化器如Adam时学习率可以设得比SGD大一些因为自适应优化器会对每个参数的学习率做缩放。5.2 批大小的影响不只是“一次处理多少样本”批大小决定了每次参数更新时用多少个样本计算梯度。批大小越大梯度估计越准确但内存占用也越大。批大小越小梯度噪声越大但有时噪声反而有助于跳出局部最优。实际中批大小的选择受限于显存。如果显存不够可以用梯度累积每次只处理一个小批量但把梯度累加起来累积几次之后再更新参数。这样等效于用了更大的批大小但显存占用不变。这个技巧在训练大模型时非常实用。批大小还会影响Batch Normalization的行为。BN在训练时用当前批次的均值和方差做归一化所以批大小太小时均值和方差的估计不准BN的效果会变差。实际中如果批大小小于8可以考虑用Group Normalization或者Layer Normalization替代。5.3 Batch Normalization训练和推理阶段的差异BN是深度学习中最重要的技巧之一但它的训练和推理行为不一致这一点经常被忽略。训练时BN用当前批次的均值和方差对输入做归一化同时维护一个全局的均值和方差用滑动平均更新。推理时BN不再用当前批次的统计量而是用训练时维护的全局统计量。为什么要这样设计因为推理时可能只来一个样本没法算批次的均值和方差。如果推理时还用单个样本的统计量结果会非常不稳定。所以训练时维护全局统计量推理时直接用保证输出稳定。这个差异导致一个实际中容易踩的坑如果你在训练时用了BN但推理时忘了切换到评估模式结果会差很多。比如在PyTorch里你需要显式调用model.eval()来切换BN和Dropout的行为。我见过有人在部署模型时忘了这一步导致推理结果和验证结果对不上排查了半天才发现是BN的模式问题。6. 过拟合与正则化模型“背答案”了怎么办6.1 判断过拟合的信号训练损失降、验证损失升过拟合最典型的信号是训练集上的损失持续下降但验证集上的损失在降到某个点之后开始上升。这说明模型开始“记住”训练集的噪声而不是学习泛化规律。另一个信号是训练准确率和验证准确率的差距越来越大。实际中判断过拟合不能只看一个epoch。因为验证损失本身有波动偶尔上升一下可能是正常的。我通常看连续几个epoch的趋势如果验证损失连续三到五个epoch都在上升而训练损失还在降那就基本可以确认过拟合了。6.2 数据增强最“划算”的正则化手段数据增强是增加训练数据多样性的最直接方式。对图像任务来说常用的增强包括随机裁剪、随机翻转、颜色抖动、旋转等。这些操作不改变图像的语义标签但让模型每次看到的样本都略有不同从而迫使模型学习更鲁棒的特征。数据增强的力度需要控制。增强太弱效果不明显增强太强可能改变图像语义导致模型学到错误的东西。比如对手写数字识别任务随机旋转30度可能就把“6”转成了“9”标签就不对了。所以增强策略要结合具体任务来定。注意数据增强只用在训练集上验证集和测试集不要做增强除了必要的归一化。因为验证集是用来评估模型真实性能的增强会引入随机性导致评估结果不稳定。6.3 Dropout与权重衰减两种不同的正则化思路Dropout的思路是在训练时随机“关掉”一部分神经元每次前向传播时每个神经元以一定概率被置零。这样做的好处是模型不能依赖某个特定的神经元必须学习更分散的特征表示。推理时所有神经元都打开但输出要乘以保留概率保证期望一致。权重衰减的思路是在损失函数里加上权重的L2范数迫使权重尽量小。权重小意味着模型对输入的微小变化不敏感从而更稳定。实际中权重衰减系数通常设在1e-4到1e-2之间太小没效果太大可能导致欠拟合。这两种正则化可以同时用但要注意力度。如果Dropout概率设得很高比如0.5以上同时又加了很大的权重衰减模型可能欠拟合训练损失都降不下去。我一般先调Dropout再调权重衰减每次只动一个观察验证集的变化。7. 从训练到部署那些“跑通”之后才会遇到的问题7.1 模型保存与加载别只保存权重训练完模型后保存方式有两种只保存权重参数或者保存整个模型结构加权重。只保存权重的好处是文件小但加载时需要重新定义模型结构如果结构定义和训练时不一致加载就会出错。保存整个模型的好处是加载方便但文件大而且如果代码结构变了加载可能失败。我习惯的做法是保存权重参数字典同时把模型定义代码和超参数配置一起存下来。这样即使以后代码重构了只要模型定义没变就能正确加载。另外保存时最好记录训练时的配置比如学习率、批大小、优化器类型方便复现。7.2 推理速度优化从模型剪枝到量化训练好的模型往往参数量很大推理速度慢。如果部署到性能受限的设备上就需要做优化。常用的手段有剪枝、量化和知识蒸馏。剪枝是去掉模型中不重要的连接或神经元。比如把权重接近0的连接去掉模型变小速度变快。量化是把浮点权重转成低精度表示比如从32位浮点转成8位整数模型大小减少四分之三推理速度也能提升。知识蒸馏是用一个大模型教师指导一个小模型学生训练让小模型学到和大模型相近的性能。这些优化手段各有取舍。剪枝和量化可能带来精度损失需要做微调来恢复。知识蒸馏需要额外训练一个小模型但精度损失通常较小。实际中根据部署环境的限制来选择。7.3 常见部署坑输入预处理不一致这是最容易被忽略但影响最大的问题。训练时你对输入做了归一化比如把像素值从[0, 255]缩放到[0, 1]再减去均值除以标准差。部署时如果忘了做同样的预处理模型看到的输入分布和训练时完全不同输出会完全错误。我遇到过好几次这种情况离线评估准确率很高上线后效果很差排查半天发现是预处理代码不一致。所以部署时一定要把预处理逻辑和模型绑定在一起最好写成一个完整的推理管道输入原始数据输出最终结果中间不做任何手动干预。8. 复习这件事我的个人体会回头看深度学习的基础知识其实不多但每一个都值得反复琢磨。我自己的习惯是每隔一段时间就挑一个基础点试着用最朴素的语言把它讲清楚如果讲不清楚说明还没真正理解。比如“卷积为什么能提取特征”这个问题我前后想过好几次每次都有新的体会。最开始觉得是“卷积核在匹配模式”后来觉得是“权重共享带来了平移不变性”再后来觉得是“多层堆叠带来了层次化的特征表示”。每个理解都不算错但合在一起才比较完整。另一个体会是复习的时候一定要动手。光看公式和文字很容易产生“我懂了”的错觉。但只要你试着用代码实现一遍或者用一个极小的例子手算一遍就会发现很多之前忽略的细节。比如反向传播你看十遍推导不如自己用NumPy写一个两层网络的反向传播写完再和框架的自动求导对比那个理解深度是完全不一样的。最后说一个实际中很有用的习惯建一个自己的“问题清单”。每次遇到不懂的地方不管多小都记下来。过一段时间回头看你会发现有些问题已经自然解决了有些还需要再查。这个清单就是你知识体系里的“薄弱点地图”复习的时候优先看这些效率比从头翻书高得多。

相关新闻

darwin-universal安装包实战:macOS批量部署与离线安装指南

darwin-universal安装包实战:macOS批量部署与离线安装指南

简介:VSCode-darwin-universal-1.zip 是微软官方面向苹果电脑发布的代码编辑器安装包,为通用版本,同时支持英特尔处理器与自研芯片。压缩包内共有一千一百六十七个文件,大小约一百九十八兆字节,主要包含配置信息、脚本…

2026/10/15 22:59:24 阅读更多 →
降AI工具实测:10款免费改写工具与论文AIGC检测应对指南

降AI工具实测:10款免费改写工具与论文AIGC检测应对指南

1. 为什么现在大家都在找降AI工具1.1 论文里“AI味”是怎么来的过去两年,AI辅助写作已经成了很多人写论文的默认起点。先让AI生成提纲、摘要甚至初稿,然后自己再改,这个流程本身没有错,问题在于:AI生成的中文&#xff…

2026/10/15 22:59:24 阅读更多 →
嵌入式系统复习攻略:Cortex-M、中断与RTOS高频考点解析

嵌入式系统复习攻略:Cortex-M、中断与RTOS高频考点解析

简介:这是一份面向北邮国际学院《嵌入式系统》课程期末复习的PDF学习资料,内容聚焦STM32、C语言与GPIO等核心考点,帮助同学快速梳理嵌入式系统基本概念、约束条件、计算机体系结构、ARM/Cortex-M4寄存器与内存映射,以及MSP/PSP双栈…

2026/10/15 22:59:24 阅读更多 →

最新新闻

Python工具链Rust化:五个提升开发效率的新库实战指南

Python工具链Rust化:五个提升开发效率的新库实战指南

这两年 Python 生态里的话题,绕不开一个词:Rust 化。从包管理到 lint 再到数据验证,一堆新库选择直接用 Rust 重写底层,把之前 Python 工具链里让人头疼的慢、复杂、配置繁琐的问题挨个收拾了一遍。我最近在几个项目里把工具链切到…

2026/10/15 23:45:00 阅读更多 →
Unity输入与屏幕设置实战笔记:从旧版Input到Input System

Unity输入与屏幕设置实战笔记:从旧版Input到Input System

我不太喜欢写那种截图铺满的入门教程,这篇更偏向我自己反复会翻的备忘录。主题就两个:一是Unity里的按键操作,二是屏幕设置。搞游戏开发或者做工具类应用的人应该都有同感,这两种需求几乎每个项目都会碰上,但每次写都还…

2026/10/15 23:45:00 阅读更多 →
五个Python新库盘点:uv、marimo、FastHTML、instructor、textual

五个Python新库盘点:uv、marimo、FastHTML、instructor、textual

Python 生态这两年的迭代速度,说实话比我刚入行那会儿快太多了。以前盯住一两个框架就能吃很久,现在隔一阵子不刷社区,就会冒出一批名字崭新的库。新库多不稀奇,稀奇的是其中真正值得花时间去跟的,永远是少数。今天这篇…

2026/10/15 23:45:00 阅读更多 →
基于Spring Boot的Web图书管理系统开题报告写作指南

基于Spring Boot的Web图书管理系统开题报告写作指南

写开题报告最怕什么?不是查重太高,而是被指导老师问一句“你这个基于Spring Boot的Web图书管理系统,到底要解决什么问题?”当场愣住。我帮人改过不少开题报告,发现真正写得稳的,往往不是技术最炫的&#xf…

2026/10/15 23:45:00 阅读更多 →
QMUI iOS 深入解读:基于全局配置表与丰富控件的 UI 开发提效方案

QMUI iOS 深入解读:基于全局配置表与丰富控件的 UI 开发提效方案

移动开发UI组件 【免费下载链接】QMUI_iOS QMUI iOS——致力于提高项目 UI 开发效率的解决方案 项目地址: https://gitcode.com/gh_mirrors/qm/QMUI_iOS 点击查看 免费下载 QMUI iOS 是由腾讯出品的开源 iOS UI 解决方案,核心目标是通过「一份全局配置表…

2026/10/15 23:45:00 阅读更多 →
PyTorch深度学习实战:从环境搭建到模型训练与调试的完整指南

PyTorch深度学习实战:从环境搭建到模型训练与调试的完整指南

1. 从零上手PyTorch:为什么它成了深度学习项目的默认起点如果你最近打算认真做点深度学习相关的项目,不管是图像分类、文本生成还是推荐系统,大概率绕不开PyTorch这个名字。我身边不少做算法的朋友,从早期用别的框架折腾静态图&am…

2026/10/15 23:43:59 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →