损失函数从入门到实战:MSE、交叉熵与Hinge Loss深度解析
做深度学习也有一段时间了发现很多刚入门的朋友一上来就抱着框架文档啃张量、梯度、反向传播、优化器……名词记了一大堆但真到了训练一个模型的时候却连最基础的损失函数都说不清楚。这不能怪大家因为网上很多教程要么只讲理论要么只丢一段代码很少把“为什么用这个损失函数”“这个公式到底在算什么”讲透。这篇文章我就从神经网络最底层的东西开始把神经元、激活函数、前向传播这些基础概念揉碎了讲清楚然后再用三种最常见的损失函数——均方误差、交叉熵、Hinge Loss——作为切入点不光给你公式和代码还给你解释每个符号背后的直觉以及实际踩坑时怎么排查。内容不挑基础哪怕你只懂一点点Python也能跟上节奏。1. 神经网络核心概念快速扫盲1.1 神经元与感知机网络的最小单元很多人一听到“神经网络”就觉得高深其实它的最小单元特别朴素——就是一个带权重的求和器。你回想一下初中数学里的直线方程 y wx b这就是一个最原始的神经元。输入 x 经过权重 w 缩放再加上偏置 b得到输出 y。只不过在神经网络里这个“神经元”会接收多个输入 x1、x2、x3……每个输入都有自己对应的权重 w1、w2、w3……然后把这些加权求和的结果再扔进一个激活函数里。用公式写就是z w1x1 w2x2 w3*x3 b。这个 z 叫“净输入”。如果只有这一步它就是一个线性模型也就是感知机。感知机在1958年就被提出来了当时号称能模拟人脑神经元但它有个致命缺陷——只能处理线性可分的问题。比如“异或”这种简单的逻辑单层感知机就学不会。这也是神经网络沉寂了很长一段时间的原因。后来的突破在于两点一是把大量这样的神经元堆叠成多层二是引入非线性激活函数。当网络有了隐藏层和激活函数之后它就能逼近任意复杂的函数了。所以你现在看到的所有深度学习模型不管多花哨底层都是堆叠的神经元本质上就是一边做加权求和一边做非线性变换。1.2 激活函数让网络具备非线性能力激活函数是神经网络里绝对绕不开的东西。为什么必须要有它因为如果你不做非线性变换那不管网络堆多少层最终结果仍然是输入的线性组合。这就好比你怎么用直尺拗都拗不出波浪线——没有激活函数再深的网络也只是一把直尺。常用的激活函数有三个Sigmoid、Tanh、ReLU。Sigmoid 把任意实数压缩到0到1之间公式是 σ(z) 1 / (1 e^(-z))。它最大的用处是输出层做二分类概率但在隐藏层使用容易梯度消失现在已经不那么吃香了。Tanh 把输出压缩到-1到1之间效果比Sigmoid好一点但同样存在饱和区梯度消失的问题。ReLU 是现在默认的隐藏层激活函数公式简单到离谱f(z) max(0, z)。正区间梯度永远是1负区间输出为0计算快、收敛快。我经常用一句话跟别人解释 ReLU 为什么有效它像一个只保留正面情绪的人负面信号来了直接忽略正面信号全单照收。这样一来梯度就能顺畅地往深处传不会因为连续乘小于1的数而越来越小。当然 ReLU 也有自己的毛病比如“神经元死亡”也就是某个神经元对所有输入都输出0梯度永远为0再也无法更新了。这个我在后面踩坑部分会专门聊。1.3 前向传播与反向传播数据如何流动前向传播很直观就是从输入层开始一层一层做“加权求和激活函数”一直算到输出层。比如一张图片像素值作为输入经过第一层神经元算出中间特征再经过第二层最后输出一个类别概率向量。这个过程不涉及任何“学习”纯粹是计算。真正让网络学会东西的是反向传播。它的核心思想是“用损失函数对每个权重求偏导然后沿着梯度下降方向更新权重”。你可以把网络想象成一条水管水从输入流向输出每一个阀门权重都影响最终出水的压力。前向传播就是注水反向传播则是根据出水口和目标水压的差距逆向地一点点调整每个阀门让水压越来越接近目标。数学上反向传播就是链式法则的反复应用框架自动帮你算好了梯度你只需要调用backward()。理解前向和反向的区别特别重要因为后面聊到损失函数时你要明白损失函数就是那个“目标水压”它定义了什么是正确、什么是不正确而反向传播只是把偏离目标的信号送回去。2. 损失函数到底是什么2.1 损失函数的作用与设计逻辑损失函数也叫代价函数是衡量模型预测结果与真实标签之间差距的函数。训练网络本质上就是一个不断降低损失的过程。你给网络一堆数据它输出一堆预测值算一下损失发现高了于是反向传播更新权重再算再更新……直到损失降到可接受的范围。损失函数的设计逻辑其实很讲究。它不能是一个随便写的差距函数必须具备几个特点第一可导因为我们要对损失求梯度来更新参数不可导的话梯度就没法算第二数值大小有相对意义同一个损失函数下损失越小代表预测越接近真实第三能放大错误理想情况下错误的预测应该比正确的预测给出明显更大的损失这样模型才学得动。你可以把损失函数理解成老师给试卷打分。这个老师不能只知道“对了还是错了”因为那样所有错误都一视同仁模型不知道哪些错得更离谱。好的打分标准是错得越离谱扣分越多。这样模型才知道优先修正最严重的错误。2.2 为什么需要三种不同的损失函数这个问题是很多新手会问的不都是衡量差距吗一种不行吗还真不行。不同的任务错误的代价不一样差距的“度量方式”也不一样。举例来说预测房价时你预测成6万和预测成5万差1万这两者的错误程度是线性的适合用均方误差。但当你在做图片分类时模型输出的是一个概率分布真实标签是“猫”用数值差异去衡量概率分布之间的差距就不合适这时候交叉熵损失才是王牌。至于 Hinge Loss它更关心的是“分数有没有拉开足够大的差距”而不是“分数具体是多少”在支持向量机和一些分类问题里有它的特殊价值。所以你可以把损失函数理解为“不同尺子的刻法”。尺子本身都是为了量长度但有的要求精确到毫米有的只要求分清楚大中小。你拿错了尺子模型要么学得慢要么直接学歪。这也是我在实操中反复强调的一件事选损失函数不是看哪个“看起来更高级”而是看你的任务属于哪一类。3. 三种损失函数计算方法详解3.1 均方误差MSE回归任务的首选均方误差英文 Mean Squared Error缩写为 MSE也常写作 L2 损失。它的公式长这样L (1/N) * Σ(y_true - y_pred)^2其中 y_true 是真实值y_pred 是模型预测值N 是样本数。MSE 先求出每个样本的误差然后平方再求和取平均。为什么要平方两个原因。第一个是消除正负抵消——如果预测值有的偏大有的偏小直接相加误差会相互抵消平方后所有误差都变成正数。第二个是放大较大误差——一个误差为10的样本平方后是100一个误差为1的样本平方后是1。误差大的样本在损失里占主导地位模型会优先压低它。这在多数回归场景里是合理的。具体计算也特别简单。假设真值是 [3.0, -1.5, 2.0]预测值是 [2.5, -1.0, 2.2]。先算每个位置的差值0.5、-0.5、-0.2平方后是0.25、0.25、0.04求平均就是 (0.25 0.25 0.04) / 3 0.18。这个0.18就是当前模型在三个样本上的平均平方误差。如果你想更直观一点可以开根号得到 RMSE它的单位和原始数据一致但训练时我们一般还是直接用 MSE 做损失因为平方项的梯度算起来更好处理。MSE 有一个需要特别留意的特性它对异常值极其敏感。如果你的数据里有几个离群点它们的平方误差会被放大得非常夸张导致模型为了迎合这几个点把整个决策边界都拉歪。所以如果你处理的是带明显噪声或者离群值的数据可以考虑 Mean Absolute ErrorMAE也就是绝对值误差它不会过度放大异常值。但 MAE 在零点不可导优化时会有一些麻烦。实操中不少人会采用 Huber Loss平滑的L1损失来兼顾两者这就是后话了。3.2 交叉熵损失分类任务的核心交叉熵损失Cross-Entropy Loss在分类任务里几乎是默认选项。它的公式分为二分类和多分类两种形式。先看二分类也就是输出一个概率 p标签 y 是0或1L -[ y * log(p) (1 - y) * log(1 - p) ]这个式子看着有点绕我拆开给你讲。当 y1 时后项 (1-y)*log(1-p) 为0剩下 -log(p)。p 越接近1-log(p) 越接近0损失越小p 越接近0-log(p) 就趋近无穷大损失爆炸。当 y0 时反过来只剩 -log(1-p)也就是模型预测为1的概率越低损失越小。所以交叉熵本质上是在对“模型给出正确类别的概率”取负对数的期望。为什么用 log 而不是直接用概率因为 log 在概率低的时候下降得特别快能给错误严重的预测施以重罚。多分类情况下公式变成对所有类别求和L -Σ y_i * log(p_i)通常我们用 one-hot 编码的标签y_i 只在真实类别处为1其他位置为0。所以这个求和实际上只计算真实类别位置的那一项其他项乘0没了。也就是说多分类交叉熵只关心模型在“正确类别”上给出的概率有多大其他类别的概率分配得怎么样它并不直接惩罚而是通过 softmax 的归一化来隐式影响。我举个例子。三分类任务某样本真实标签是类别1用 one-hot 表示就是 [1, 0, 0]。模型输出经过 softmax 之后是 [0.7, 0.2, 0.1]那么交叉熵就是 -(1log(0.7) 0log(0.2) 0*log(0.1)) -log(0.7) ≈ 0.357。如果模型输出是 [0.3, 0.4, 0.3]那损失就是 -log(0.3) ≈ 1.204。你看明显是后者更差。这也是为什么交叉熵可以作为分类的“默认尺子”它直接度量了模型对正确类别置信度的负对数置信度越低损失越高。3.3 Hinge Loss边距损失的代表Hinge Loss中文常翻译为“合页损失”或“铰链损失”它最经典的应用场景是支持向量机SVM但在神经网络的某些分类场景里也有一席之地。二分类的 Hinge Loss 公式是L max(0, 1 - y * f(x))注意这里的 y 只能取 1 或 -1f(x) 是模型输出的原始分数不是概率。如果真实标签是 1那么模型输出的分数 f(x) 越大于1损失就是0如果 f(x) 在0到1之间损失为 1 - f(x)是个正数如果 f(x) 是负数损失会更大。反之当 y-1 时要求 f(x) 越小越好并且需要小于 -1 才没有损失。这个损失函数的核心思想是你不只要分对还要以一定的“置信度”分对。模型输出分数只要大于1对于正类或小于-1对于负类损失就为0剩下的就是0损失区间。它不像交叉熵那样永远在压小损失而是给模型一个“及格线”过了及格线就完全不管了。这种性质特别适合做稀疏学习它不会为了一个已经分得很正确的样本反复调整权重从而把学习能力留给那些“还没及格”的样本。计算上也很直观。假设 y1f(x)1.5那么 1 - 1*1.5 -0.5取 max(0, -0.5) 0没有损失。假设 y1f(x)0.3那么 1 - 0.3 0.7取 max(0, 0.7) 0.7有损失。假设 y-1f(x)0.6那么 1 - (-1)*0.6 1.6取 max(0, 1.6) 1.6损失很高因为模型用正分去预测负类错得很离谱。这背后的直觉是“隔着一道墙来分类”墙的宽度是1只有离墙足够远才没有损失。多分类的 Hinge Loss 稍微复杂一些常用形式是对错误类别计算 max(0, s_j - s_y Δ) 的求和其中 s_j 是错误类别的分数s_y 是正确类别的分数Δ 是设定的边距。它的意思是正确类别得分要比错误类别得分高出至少 Δ才没有损失否则就要承受惩罚。这个式子你可能在别的文章里见过其实就是 SVM 里“支持向量”概念的来源。4. 实操在PyTorch中实现三种损失函数4.1 环境准备与数据模拟在动手之前先把环境准备好。我平时用的组合是 Python 3.10 加 PyTorch 2.x版本差别不大。如果你还没装 PyTorch直接在终端运行pip install torch numpy装好之后先用一段简单的代码构造一组回归和分类模拟数据。为了能直观看到损失计算过程我不用现成的真实数据集而是随机生成一些小规模的数据方便你一步步确认每一步的数值。import torch import torch.nn.functional as F # 回归任务模拟数据 torch.manual_seed(0) y_true_reg torch.tensor([3.0, -1.5, 2.0]) y_pred_reg torch.tensor([2.5, -1.0, 2.2]) # 二分类任务模拟数据logits未经过sigmoid y_true_bin torch.tensor([1., 0., 1.]) y_pred_logits torch.tensor([1.2, -0.8, 0.6]) # 多分类任务模拟数据3个样本4个类别 y_true_multi torch.tensor([2, 0, 3]) y_pred_multi_logits torch.tensor([ [0.1, 0.2, 0.7, 0.0], [0.8, 0.1, 0.05, 0.05], [0.2, 0.3, 0.1, 0.4] ])这里有一点需要重点说明在 PyTorch 里分类任务通常会把网络的最后一层写成nn.Linear输出的是logits也就是未经过 sigmoid 或 softmax 的原始分数。损失函数内部会自己处理激活与归一化所以你在使用交叉熵损失时不要先手动对输出做 softmax 再传给损失函数否则会导致数值不稳定甚至计算结果出错。你只需要把原始 logits 丢进去就行。这是很多新手踩的第一个坑。4.2 代码实现与计算演示下面我用 PyTorch 内置的函数分别计算三种损失并用手动方式做一遍验证。先看 MSE# 使用内置函数 mse_loss F.mse_loss(y_pred_reg, y_true_reg) print(fMSE (built-in): {mse_loss.item():.4f}) # 手动计算 mse_manual ((y_pred_reg - y_true_reg) ** 2).mean() print(fMSE (manual): {mse_manual.item():.4f})输出结果应该都是 0.1800。原因很简单差值分别是 0.5、-0.5、-0.2平方后平均是 0.18。再看二分类交叉熵。PyTorch 里有两个接口nn.BCEWithLogitsLoss和F.binary_cross_entropy_with_logits。它自动把 logits 送入 sigmoid再计算交叉熵。我写一下# 二分类交叉熵目标值要求是 float且取值在 [0, 1] bce_loss F.binary_cross_entropy_with_logits(y_pred_logits, y_true_bin) print(fBCE (built-in): {bce_loss.item():.4f}) # 手动验证先通过 sigmoid 转成概率再套公式 probs torch.sigmoid(y_pred_logits) bce_manual -( y_true_bin * torch.log(probs) (1 - y_true_bin) * torch.log(1 - probs) ).mean() print(fBCE (manual): {bce_manual.item():.4f})这里需要注意binary_cross_entropy_with_logits期望的目标张量是 float 类型如果你的标签是 long 类型要记得.float()。多分类交叉熵也是类似# 多分类交叉熵 ce_loss F.cross_entropy(y_pred_multi_logits, y_true_multi) print(fCE (built-in): {ce_loss.item():.4f}) # 手动验证 log_probs F.log_softmax(y_pred_multi_logits, dim1) ce_manual -log_probs[range(3), y_true_multi].mean() print(fCE (manual): {ce_manual.item():.4f})F.cross_entropy的内部操作是先计算 softmax然后取对数再根据标签索引出真实类别对应的 log 概率最后求平均。这也是为什么我说不要提前 softmax。最后是 Hinge Loss。PyTorch 没有内置的直接叫hinge_loss的函数但MultiMarginLoss就是多分类合页损失二分类的话用MarginRankingLoss或者直接基于公式手写。二分类 Hinge Loss 手写就两行# 二分类 Hinge Loss # 标签需要转换为 1 / -1 y_true_hinge torch.where(y_true_bin 1, 1.0, -1.0) hinge_loss torch.clamp(1 - y_true_hinge * y_pred_logits, min0).mean() print(fHinge (manual): {hinge_loss.item():.4f})clamp(min0)实现的就是 max(0, x) 操作。多分类 Hinge Loss 可以直接用torch.nn.MultiMarginLoss默认边距为1传入真实类别索引即可multi_hinge_loss torch.nn.MultiMarginLoss()(y_pred_multi_logits, y_true_multi) print(fMultiHinge: {multi_hinge_loss.item():.4f})4.3 如何根据任务选择损失函数我见过太多人上来就把交叉熵用在回归任务上结果损失一直降不下去。反过来也有人把 MSE 用在分类输出的概率上虽然能勉强训练但收敛极慢而且效果差。选择损失函数的核心判断依据是你的输出层是什么形式你的标签是什么类型。整理成一张表可以收藏备用任务类型输出层形式典型标签推荐损失原因连续值回归线性输出无激活实数价格、温度等MSE / MAE / Huber直接度量数值差异二分类1个 logit{0, 1} 或 {1, -1}BCEWithLogits / Hinge输出概率或边距分数多分类多个 logits类别索引CrossEntropy / MultiMargin比较各类别置信度多标签分类多个 logit每个独立每个标签0/1BCEWithLogits每个标签是一个二分类排序 / 相似度成对分数相关/不相关MarginRanking / Hinge关注相对差距回归任务如果你只想让模型在大部分样本上表现稳健可以试试 Huber 损失它是 MSE 和 MAE 的折中具体公式是在误差绝对值小于某个阈值时用 MSE大于阈值时用 MAE 的线性版本训练时既不会敏感于异常值也能在零点保持可导。分类任务则牢记用带 logits 的版本数值稳定性更好。没有绝对最好的损失函数只有最合适的。5. 常见问题与踩坑实录5.1 三大高频踩坑点第一个坑就是分类标签类型问题。PyTorch 的交叉熵损失要求目标标签是整数类型torch.long而 BCE 损失要求目标是浮点类型。我调试过一个模拟项目报错信息一直提示说数据类型不匹配我一开始还以为是什么权重初始化的问题结果就是训练代码里把标签从float直接传给了CrossEntropyLoss。代码能跑但梯度下降的过程完全乱套。检查一下dtype就好。第二个坑是在计算交叉熵之前手动加 softmax。很多教程会把softmax和CrossEntropyLoss当成两回事结果操作起来是先F.softmax再F.nll_loss或者直接F.cross_entropy(F.softmax(...), target)。这样做其实不影响数值太多——因为log(softmax(x))和直接用 log-sum-exp 技巧算对数概率在数学上是等价的——但如果你把softmax的输出拿去做 log会遇到 log(0) 的情况直接得到-inf梯度就变成 NaN 了。正确做法永远是把原始 logits 传给带WithLogits的函数或者传给CrossEntropyLoss本身。第三个坑是ReLU 导致的神经元死亡被忽略了。训练时如果发现损失在某个 epoch 后完全不再下降同时很多隐藏层的输出全是 0多半是 ReLU 把梯度杀死了。解决方式包括调小学习率、改用 LeakyReLU、或者用权值初始化技巧。我遇到过一个小实验网络只有两层但因为学习率设成 0.1结果一半神经元都死了换用 0.01 之后正常。5.2 排查技巧与建议看到损失不下降不要第一时间怀疑损失函数有问题。先按下面顺序排查第一检查数据是否归一化输入数值太大或太小都会导致梯度不稳定第二检查标签和输出层的激活是否匹配比如二分类输出层是线性层损失函数却用了普通 BCE第三确认损失值数量级是否合理——如果是分类问题交叉熵初值大约在 log(类别数) 附近如果远大于这个数通常意味着初始化有异常第四打印一层相对较浅的层的梯度看看是不是已经消失了或者爆了。另外我想提一个特别实用的小技巧在做深度学习实验时永远先用一个小数据集比如 4 个样本跑过拟合。如果模型在这 4 个样本上都不能把损失降到接近 0那说明实现有 bug不要继续花时间去调大模型。我自己的习惯是写损失函数相关代码时会先手动算几个样本的预期值然后跟 PyTorch 输出对比确认一致后再接着往下写训练循环。这能在最开始就拦截掉 80% 的隐性 bug。最后再分享一个心态上的体会损失函数虽然是训练的核心但它不值得你花太多时间在“选哪个更好”上。更值得花时间的是把数据处理好、把模型结构搭对、把训练过程稳定性调好。损失函数通常是最后一个被替换的零件而不是第一个应该怀疑的环节。我在实际使用中发现很多问题的根源并不是损失函数本身而是我们对它的数学含义理解得不够透。当你亲手把 MSE、交叉熵、Hinge Loss 的计算过程一步一步算出来之后再去看框架源码就会有一种豁然开朗的感觉。那些看起来高深莫测的 API本质不过是把最常见的公式帮你封装好了而已。希望这篇内容能帮你在入门阶段少走一点弯路。

相关新闻

Maven环境搭建全攻略:下载、安装、环境变量与settings.xml配置实战

Maven环境搭建全攻略:下载、安装、环境变量与settings.xml配置实战

如果你是Java开发者,那么 Maven 的下载、安装、配置环境变量、修改配置文件 这四件套,大概率是你入行后第一次需要独立完成的环境搭建任务。很多新手到这一步就开始发慌:官网到底该下哪个包?环境变量配完为什么还是找不到命令&…

2026/10/18 11:08:57 阅读更多 →
C# + SQL Server选课系统源码剖析:从DataSet缓存到事务并发控制

C# + SQL Server选课系统源码剖析:从DataSet缓存到事务并发控制

简介:一套基于C#与SQL Server数据库的学生选课及成绩查询管理系统,是典型的课程设计/毕业设计级桌面应用源码,面向计算机专业学生、初入职开发者及教学实训场景。系统覆盖学生信息管理、课程设置、选课冲突处理、成绩录入与多条件查询、权限控…

2026/10/18 11:08:57 阅读更多 →
MATLAB实现多模型集成BMA:EM算法与偏差校正详解

MATLAB实现多模型集成BMA:EM算法与偏差校正详解

简介:这是一套基于MATLAB实现的多模型集成(BMA)方法资源,面向气象、环境、水文等领域的科研人员与中高级学习者,旨在解决单一模型预测不确定性高、精度不稳定等问题。资源以贝叶斯模型平均为理论内核,在备选…

2026/10/18 11:08:57 阅读更多 →

最新新闻

VS Code 配置 SQL Server ServiceLayer 详细指南

VS Code 配置 SQL Server ServiceLayer 详细指南

简介:本资源是为解决 VS Code 中 SQL Server 扩展连接失败问题而提供的 Microsoft.SqlTools.ServiceLayer 服务层离线安装包,专面向使用 VS Code 进行 SQL Server 开发的中初级开发者及数据库运维人员。当用户安装官方 SQL Server (mssql) 扩展后因 GitH…

2026/10/18 12:57:41 阅读更多 →
纯CSS实现环绕倒影加载动画:核心原理与完整代码实战

纯CSS实现环绕倒影加载动画:核心原理与完整代码实战

加载动画是前端里最容易被忽略、但也最能体现细节的部分。最近我整理组件效果时,用纯 htmlcss 写了一个环绕倒影加载特效:中间一圈发光进度环,周围几颗光点像行星一样公转,容器底部还有一层渐隐倒影,整体看起来像把一个…

2026/10/18 12:57:41 阅读更多 →
中科大生化实验原理复习:从PDF到因果链与参数边界

中科大生化实验原理复习:从PDF到因果链与参数边界

简介:这份PDF是中国科学技术大学2024-2025学年《生化原理与应用Ⅰ》研究生课程的期末复习资料,面向生命科学、生物化学等专业备考学生,帮助系统梳理实验技术原理与高频考点。内容覆盖色谱法、电泳技术、质谱分析、核磁共振、X射线晶体学、单颗…

2026/10/18 12:57:41 阅读更多 →
SQLite3跨平台编译完全指南:从源码生成Windows与Linux静态库

SQLite3跨平台编译完全指南:从源码生成Windows与Linux静态库

简介:面向C后端开发者的SQLite数据库跨平台库资源包,覆盖Windows 64位系统、32位系统以及Linux操作系统环境,解决不同平台上集成SQLite时的库文件匹配问题。压缩包内共8个文件,包含Windows下的.lib链接库与.dll动态库、Linux下的.…

2026/10/18 12:57:41 阅读更多 →
豆瓣图书爬虫实战:用requests与pandas将书单自动导出Excel

豆瓣图书爬虫实战:用requests与pandas将书单自动导出Excel

简介:《豆瓣图书爬虫以及图书数据xlsx》是一份面向Python爬虫与数据分析初学者的实操型资源包,围绕豆瓣图书信息抓取与整理展开。压缩包内共12个文件,包含1个爬虫主程序与11个按主题拆分的xlsx表格,覆盖数学、编程、金融、心理、计…

2026/10/18 12:57:41 阅读更多 →
Python处理Word表格:土建安装监理资料包解析与自动化

Python处理Word表格:土建安装监理资料包解析与自动化

简介:这份四川建龙软件全套表格文档面向土建、安装、监理三大工程领域的施工管理人员、监理工程师及建设单位项目负责人,用于规范工程质量事故报告、开工报告、施工日志、技术核定单等环节的标准化填报流程。资源包内含1个doc文件,约4.42MB&a…

2026/10/18 12:56:41 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →