523节全手写AI课:从零实现大模型,真正理解反向传播与Transformer
1. 523节课背后的野心为什么全手写才是这个开源AI课最狠的地方第一次看到523节全手写实现这个说法我的反应是这要么是个噱头要么是个疯子干的事。原因很简单——现在市面上讲AI的课程绝大多数走的是调包调参路线导入sklearn、调一下transformers、跑个预训练模型一节课20分钟就过去了。真正愿意从零手写矩阵乘法、手写反向传播、手写注意力机制的课程凤毛麟角。但恰恰是手写这两个字决定了这门课和市面上90%的AI入门内容不在一个层级上。我先把结论摆在这里如果你学AI的目标是能跑通一个demo那手写实现对你意义不大但如果你的目标是真正理解模型内部发生了什么、出了问题能自己定位、面试时能讲清楚每一层的梯度怎么流动那手写实现几乎是绕不过去的一道坎。这门523节的开源课本质上是在用最笨、最慢、但也最扎实的方式把AI大模型的基础理论从数学公式一路铺到可运行的代码。1.1 为什么手写和调包是两种完全不同的学习路径调包学习的路径是这样的你知道model.fit()能训练模型知道loss.backward()能算梯度但你不清楚backward()内部到底做了什么。一旦遇到梯度爆炸、loss不收敛、维度对不上你的排查手段就只剩下改学习率、换优化器、加batch norm这三板斧。手写实现的路径完全不同。当你自己用numpy实现一遍反向传播你会被迫面对这些问题链式法则在矩阵维度上到底怎么展开softmax的雅可比矩阵为什么是那个形式LayerNorm的梯度为什么要分两支回传这些问题在调包时永远不会浮现但它们是模型出问题时你唯一能依靠的东西。我举个具体的例子。很多人第一次遇到训练loss正常下降但验证集完全不动的情况时第一反应是过拟合。但如果你的模型里有一层手写的BatchNorm你就会立刻意识到验证阶段用的是running mean和running var如果momentum设置不当或者训练步数太少running统计量根本没收敛验证集的表现自然一塌糊涂。这个判断调包的人是做不出来的。1.2 523节这个体量意味着什么523节不是随便定的数字。我粗略拆解过类似体量的课程结构大致会覆盖这么几个层次数学基础层线性代数、概率论、微积分在AI中的具体用法大概占60-80节经典模型层从感知机、MLP到CNN、RNN、LSTM的手写实现大概占150-180节Transformer与大模型层注意力机制、位置编码、多头注意力、GPT结构的逐层手写大概占120-150节训练与优化层反向传播、优化器、学习率调度、混合精度的手写实现大概占80-100节工程实践层数据管道、分布式训练、推理优化、部署大概占80-100节这个结构的关键在于它不是按知识点组织的而是按实现难度递进的。每一节都建立在前一节手写代码的基础上你不可能跳过反向传播直接去手写Transformer因为Transformer的每一层都需要你自己写梯度。1.3 这门课适合谁不适合谁适合的人有Python基础、学过一点微积分和线代、想真正搞懂大模型内部机制的人。特别是那些准备面试AI岗位、或者在工作中需要自己改模型结构的人手写一遍的价值远超看十篇论文解读。不适合的人只想快速用现成API做个应用的人。这类需求用LangChain、用现成的SDK就够了没必要花几百小时手写。提示如果你决定跟这门课建议先花两天时间把numpy的矩阵运算和广播机制彻底搞熟。我见过太多人卡在为什么这个矩阵乘法维度对不上这种问题上最后放弃。这不是AI的问题是numpy基本功的问题。2. 从零手写一个大模型到底要跨过哪几道坎很多人以为手写大模型最难的是理解Transformer其实不是。Transformer的结构本身并不复杂一张图就能画清楚。真正难的是那些论文里一笔带过、但实现时必须精确处理的细节。我按自己踩坑的顺序把这几道坎梳理一遍。2.1 第一道坎反向传播的矩阵维度地狱手写反向传播最反直觉的地方在于前向传播时你觉得维度都对得上反向传播时突然就乱了。原因是你没有系统地追踪每个中间变量的形状。我的做法是在写任何一层的前向传播时同时在注释里标注输入输出形状以及每个中间变量的形状。比如手写一个线性层def forward(self, x): # x: (batch, in_features) # W: (in_features, out_features) # b: (out_features,) self.x x # 缓存输入用于反向 self.out x self.W self.b # (batch, out_features) return self.out def backward(self, grad_out): # grad_out: (batch, out_features) self.grad_W self.x.T grad_out # (in_features, out_features) self.grad_b grad_out.sum(axis0) # (out_features,) grad_x grad_out self.W.T # (batch, in_features) return grad_x这段代码看起来简单但如果你不缓存self.x反向传播时就没法算grad_W。而缓存哪些变量、不缓存哪些变量取决于你是否需要它们来计算梯度。这个判断只有你自己手写一遍才能形成肌肉记忆。更麻烦的是softmax加交叉熵的组合。单独写softmax的反向传播雅可比矩阵是个对角矩阵减去外积维度是(batch, num_classes, num_classes)内存直接爆炸。但如果你把softmax和交叉熵合在一起推导梯度会简化成softmax_output - one_hot_label干净得不可思议。这个技巧论文里通常不写但手写实现时必须知道。2.2 第二道坎注意力机制的mask到底怎么加Transformer里的mask分两种padding mask和causal mask。padding mask是为了忽略填充的tokencausal mask是为了防止看到未来的token。这两种mask在实现时的加法完全不同。padding mask通常是在计算attention score之后把padding位置的score设成一个极大的负数比如-1e9这样softmax之后这些位置的权重就接近0。causal mask则是构造一个下三角矩阵上三角部分设为负无穷。我踩过的坑是mask的维度必须和attention score的维度完全对齐。attention score的形状是(batch, num_heads, seq_len, seq_len)而你的mask如果只有(seq_len, seq_len)就需要广播。广播本身没问题但如果batch和head维度上广播错了模型不会报错只会静默地学到错误的东西。这种bug最难查因为loss看起来在下降只是效果差一点。我的建议是写完mask之后立刻用一个极小的例子比如batch2, heads2, seq_len4手动打印attention score和mask后的结果确认padding位置和未来位置的权重确实是0。这个验证花不了10分钟但能省掉你后面几天的调试。2.3 第三道坎LayerNorm的梯度回传LayerNorm看起来简单减均值、除标准差、乘gamma加beta。但它的反向传播是手写实现里最容易写错的地方之一。问题出在均值和标准差本身也是输入的函数。也就是说当你对LayerNorm的输入求梯度时均值和标准差也要参与链式法则。具体来说梯度要分成三支回传一支直接来自归一化后的值一支来自均值一支来自方差。我见过很多人手写的LayerNorm反向传播只写了第一支结果模型也能训练但收敛速度明显慢于PyTorch的实现。原因就是梯度不完整优化方向有偏差。正确的做法是先把LayerNorm的公式完整展开然后对输入x逐项求偏导。这个过程很繁琐但推导一次之后你对归一化的理解会上升一个层次。而且这个推导在面试里是高频考点能自己推出来的人不多。2.4 第四道坎训练稳定性的玄学问题手写实现跑到一定规模后你会遇到各种玄学问题loss突然变成nan、梯度爆炸、训练到一半loss反弹。这些问题在调包时很少遇到因为框架已经帮你做了大量数值稳定处理。常见的数值稳定技巧包括问题原因解决方案loss变nansoftmax溢出减去最大值再exp梯度爆炸深层网络连乘梯度裁剪训练不稳定初始化不当Xavier/Kaiming初始化收敛慢学习率固定warmupcosine衰减显存溢出中间变量未释放及时deltorch.cuda.empty_cache这些技巧每一个背后都有数学原理。比如softmax减最大值是因为exp(x)在x很大时会溢出但softmax的结果对平移不变所以减去最大值不改变结果只改变数值稳定性。这个道理你手写一遍就永远不会忘。注意手写实现时建议先用小规模数据比如100条样本、2层网络跑通整个流程确认梯度正确后再放大。我见过太多人一上来就用完整数据集训练结果nan了都不知道是哪一层的问题。3. 这门课真正值钱的地方把论文里的显然变成代码里的确定论文里最常见的表述是it is easy to see that或者obviously。每次看到这种话我就知道这里藏着坑。因为作者觉得显然的东西往往是他已经推导过无数遍的东西而对你来说可能是全新的。这门523节课程最大的价值就是把这些显然全部展开成可运行的代码。3.1 位置编码从正弦函数到可学习参数Transformer原论文用的是正弦位置编码公式是PE(pos, 2i) sin(pos / 10000^(2i/d_model)) PE(pos, 2i1) cos(pos / 10000^(2i/d_model))这个公式看起来简单但实现时有几个细节为什么分母是10000而不是别的数为什么奇偶维度用不同的函数为什么这种编码能表达相对位置手写实现时你会被迫回答这些问题。比如10000这个数其实是一个超参数它决定了不同维度上波长变化的范围。如果设得太小高频维度变化太快模型学不到长距离依赖设得太大低频维度几乎不变浪费了维度。而后来GPT系列改用可学习的位置编码原因也很直接正弦编码是固定的无法适应不同长度的序列可学习编码虽然需要更多参数但灵活性更高。这个取舍只有你两种都手写过一遍才能真正理解。3.2 残差连接为什么它能让深层网络训练起来残差连接的形式极其简单output x f(x)。但它的作用机制并不直观。手写实现时你会发现残差连接对反向传播的影响是巨大的。没有残差时梯度要穿过每一层的雅可比矩阵连乘很容易消失或爆炸。有了残差梯度有一条高速公路直接回传到浅层因为d(output)/d(x) I d(f(x))/d(x)那个单位矩阵I保证了梯度至少能以1的比例回传。这个道理看论文时你可能觉得哦有道理但手写一遍反向传播看到梯度确实通过残差路径无损回传时你才会真正理解为什么ResNet能训练1000层而普通网络连20层都费劲。3.3 学习率调度warmup为什么有效warmup是指在训练初期把学习率从很小的值逐渐增加到目标值。这个技巧在Transformer训练里几乎是标配但论文里只说了we use warmup没解释为什么。手写实现时你会观察到训练初期模型参数是随机初始化的梯度方向很不稳定。如果这时候用大学习率参数会被大幅更新可能直接跳到loss很高的区域然后再也回不来。warmup的作用就是给模型一个预热期让它在小学习率下先找到大致正确的方向再加速。我自己的经验是warmup的步数通常设为总步数的5%-10%。太少起不到作用太多浪费训练时间。而且warmup之后通常接cosine衰减让学习率平滑地降到接近0这样模型能在最后阶段精细收敛。3.4 手写实现带来的确定性调包时你对模型的行为是猜测的loss下降了你猜是模型学到了东西loss不降你猜是学习率不对。但手写实现时你对每一步都是确定的你知道这一层的梯度是怎么算的知道这个参数是怎么更新的知道这个loss是由哪些项组成的。这种确定性在排查问题时价值巨大。比如模型在某个任务上表现差调包的人只能试各种trick而手写的人可以直接检查是某一层的梯度消失了是某个激活函数饱和了是attention的mask加错了这种定位能力是手写实现最实际的回报。4. 跟课实操怎么把523节真正吃下来而不是收藏吃灰523节是个很大的体量。如果按每节30分钟算总共是260多个小时。就算每天学2小时也要4个多月。这个过程中最大的风险不是学不会而是中途放弃。我结合自己跟类似长课程的经验给几个实操建议。4.1 不要按顺序学按最小可运行闭环学很多人跟课的习惯是从第一节开始一节一节往下看。这个方法对523节的课程是灾难性的因为你会在数学基础部分就耗尽耐心。我的建议是先找到最小可运行闭环。比如先跳到手写一个单层感知机那一节把代码跑通看到loss下降。然后再回头补数学基础这时候你学数学是有目标的知道每个公式对应代码里的哪一行。具体路径可以是先跑通一个最简单的线性回归手写实现约10节再跑通一个两层MLP做分类约20节然后跳到Transformer的手写实现先跑通前向传播约30节回头补反向传播和优化器的细节约50节最后系统性地补数学基础和进阶内容这个路径的好处是你在每个阶段都有可运行的成果有正反馈不容易放弃。4.2 每节代码必须自己敲一遍不能复制粘贴这是最重要的一条。看代码和写代码是两种完全不同的认知活动。看的时候你觉得懂了写的时候你会发现这个变量名是什么这个维度怎么来的为什么这里要转置。我的做法是看一节视频关掉自己凭记忆写一遍。写不出来再看看完再关掉写。这个过程很痛苦但效果是复制粘贴的十倍。而且手写时你会自然产生问题为什么这里用这个初始化为什么这里要除以sqrt(d_model)这些问题驱动你去查资料、去推导形成真正的理解。4.3 建立自己的梯度检查习惯手写实现最容易出错的地方是梯度。我的习惯是每写完一层的反向传播就用数值梯度验证一遍。方法很简单def numerical_grad(f, x, eps1e-5): grad np.zeros_like(x) it np.nditer(x, flags[multi_index]) while not it.finished: idx it.multi_index old x[idx] x[idx] old eps f_plus f(x) x[idx] old - eps f_minus f(x) grad[idx] (f_plus - f_minus) / (2 * eps) x[idx] old it.iternext() return grad然后用这个数值梯度和你的解析梯度对比相对误差应该在1e-6以下。如果误差大说明你的反向传播推导有误。这个习惯能帮你省掉大量调试时间。我见过很多人手写的模型训练不收敛查了两天发现是某一层的梯度符号写反了。如果有梯度检查这个问题5分钟就能发现。4.4 用教别人的方式检验自己每学完一个模块试着用自己的话把它讲一遍。可以写成博客、录成视频、或者在群里给别人讲。如果你讲的时候卡壳了说明你还没真正理解。我自己的经验是手写实现Transformer之后我以为自己懂了。但当我试着给别人讲为什么多头注意力要除以sqrt(d_k)时我发现自己只能说出防止softmax梯度消失这个标准答案但讲不清楚具体机制。于是我又回去推导了一遍才真正搞明白点积的方差随d_k增大而增大如果不缩放softmax的输入会很大导致梯度接近0。这种讲不出来就回去重学的循环是长课程学习中最有效的质检手段。5. 手写实现之外这门课没教但你必须知道的事523节手写课能帮你建立扎实的基础但AI工程不只是手写模型。有几个方面课程可能覆盖不到但实际工作中非常重要。5.1 数据质量比模型结构重要得多手写实现时我们通常用干净的数据集比如MNIST、CIFAR所以模型效果主要取决于结构。但真实场景中数据质量的影响远大于模型结构。我做过一个对比实验同一个模型在清洗过的数据上准确率92%在未清洗的数据上只有78%。而换一个更复杂的模型结构准确率只提升了2%。这意味着花时间在数据清洗和标注上回报远高于调模型。具体的数据问题包括标签噪声、类别不平衡、分布偏移、重复样本。这些问题在手写实现时不会遇到但工作中是常态。5.2 推理优化训练完只是开始手写实现关注的是训练过程但模型上线后推理性能才是关键。常见的推理优化手段包括量化把float32转成int8模型大小减少4倍速度提升2-3倍精度损失通常小于1%剪枝去掉不重要的权重减少计算量蒸馏用大模型教小模型让小模型达到接近大模型的效果算子融合把多个操作合并成一个减少内存访问这些技术手写实现时不会涉及但它们是模型落地的必经之路。建议在学完手写实现后专门花时间学一下推理优化。5.3 分布式训练单卡不够用怎么办523节课程大概率是单卡训练的。但真实的大模型训练单卡根本放不下。分布式训练涉及数据并行、模型并行、流水线并行等策略每种都有不同的通信开销和实现复杂度。我建议先理解数据并行每张卡持有完整的模型副本处理不同的数据batch然后同步梯度。这个策略实现简单但要求模型能放进单卡显存。如果模型太大就需要模型并行把不同的层放到不同的卡上这时候通信就成了瓶颈。这些内容手写实现课程通常不会深入但如果你要训练大模型必须掌握。5.4 从手写到框架什么时候该用PyTorch手写实现的目的是理解原理不是替代框架。实际工作中99%的情况应该用PyTorch或类似框架。原因很简单框架经过了大量优化速度快、bug少、社区支持好。我的建议是手写实现用来学习框架用来生产。学完手写之后你应该能看懂PyTorch的源码知道nn.Linear内部做了什么知道autograd是怎么工作的。这种理解能让你在使用框架时更有底气遇到问题也能更快定位。6. 我踩过的几个坑以及它们教会我的事最后分享几个我在手写实现过程中踩过的坑都是那种当时很痛苦事后很值钱的经历。6.1 初始化不当导致训练完全不动第一次手写多层网络时我用的是标准正态分布初始化权重。结果训练了100个epochloss几乎没变。查了半天才发现标准正态的方差太大导致每层的输出方差逐层放大到最后一层时激活值已经饱和梯度接近0。正确的做法是用Xavier初始化权重方差设为2/(fan_in fan_out)。这个公式保证了前向传播时每层的输出方差大致不变反向传播时梯度方差也大致不变。这个坑教会我初始化不是随便设的它直接决定了网络能不能训练起来。后来我养成了习惯每写一个新层先检查它的初始化是否合理。6.2 忘记zero_grad导致梯度累积手写训练循环时我忘了在每个batch开始时清零梯度。结果梯度不断累积等效于用了超大的batch size学习率显得过大loss剧烈震荡。这个bug很隐蔽因为loss确实在下降只是不稳定。我花了一天才定位到是梯度没清零。后来我在训练循环里加了一行断言检查梯度范数是否在合理范围内超过阈值就报警。6.3 学习率太大导致loss变nan有一次我设了0.1的学习率训练到第50步时loss突然变成nan。原因是某一步的梯度太大参数更新后跳到了一个让loss函数无定义的区域比如log(0)。解决方案有两个一是梯度裁剪把梯度范数限制在某个阈值内二是用更小的学习率。我现在的习惯是先用1e-4跑几百步确认稳定后再逐步增大。6.4 这些坑的共同点回头看这些坑的共同点是它们都是静默失败——程序不报错但结果不对。手写实现时这类问题最难查因为没有框架帮你兜底。我的应对策略是建立一套自检机制。每写完一个模块用极小的数据跑一遍打印所有中间变量的形状和数值范围确认没有异常。这个习惯看起来很笨但能帮你省掉大量调试时间。提示如果你在手写实现时遇到loss不收敛先检查这三件事初始化是否合理、梯度是否清零、学习率是否过大。90%的问题出在这三个地方。7. 学完之后能做什么从手写实现到实际项目的迁移学完523节手写课你手里会有几十个从零实现的模型。但这些模型和实际项目之间还有一段距离。怎么把学到的能力迁移到实际工作中是我最后想聊的。7.1 能读懂论文里的实现细节手写实现最大的回报是你能读懂论文里的实现细节。比如读Attention is All You Need时你能立刻意识到scaled dot-product attention里的scaled是指除以sqrt(d_k)而且知道为什么要这么做。读BERT时你能理解为什么它用双向注意力而GPT用单向以及这个选择对预训练任务的影响。这种阅读能力是调包的人不具备的。他们读论文只能读到what而你能读到how和why。7.2 能自己改模型结构实际项目中现成的模型结构往往不能完全满足需求。你需要改一些层、加一些连接、调整一些超参数。这时候手写实现的经验就派上用场了。比如你想在Transformer里加一个门控机制控制信息流动。如果你手写过Transformer你知道该在哪里加、怎么加、梯度怎么回传。如果你只会调包你可能连改哪里都不知道。7.3 能定位训练中的问题训练出问题时手写实现的经验能帮你快速定位。比如loss震荡你会先检查梯度范数loss不降你会先检查初始化和学习率验证集表现差你会先检查是否有信息泄漏。这种定位能力是区分会调包和懂模型的关键。7.4 面试中的优势AI岗位面试中手写实现的经验是巨大的加分项。面试官问反向传播怎么推导调包的人只能背公式而你能从链式法则一路推到代码实现。面试官问注意力机制的计算复杂度是多少你能说出O(n^2 * d)并解释每一项的来源。我自己的经验是手写实现之后面试时被问到模型细节我能给出具体的数字和推导过程而不是模糊的大概应该是。这种确定性面试官是能感受到的。7.5 持续学习的底气最后手写实现给你的是持续学习的底气。AI领域发展很快新模型、新技术层出不穷。但底层的东西变化很慢反向传播还是那个反向传播注意力机制还是那个注意力机制。掌握了底层你学新东西时就能快速抓住本质而不是被各种术语和trick迷惑。523节课说到底不是让你记住523个知识点而是让你建立一套理解AI模型的思维框架。这个框架才是这门课真正值钱的地方。

相关新闻

Python 3D可视化实战:五大核心库选型与用法

Python 3D可视化实战:五大核心库选型与用法

这两年我前前后后帮团队和线上朋友落地了不少 Python 3D 可视化项目,从最初科研报告里的静态曲面,到后来给业务方做的交互式点云看板,最深的体会就是:选对库比堆功能重要得多。Python 生态里能做 3D 的库少说也有十几个&#xff0…

2026/10/18 9:51:48 阅读更多 →
大数据脱敏实战:从算法选型到Spark SQL落地

大数据脱敏实战:从算法选型到Spark SQL落地

跟数据打了这么多年交道,我最大的感受是:生产环境的数据是最不能信的,因为它真实得让人害怕。我见过不止一次,开发同学随口说一句"把线上用户表导一份到测试库我调个bug",然后一张带着手机号、身份证号、家庭…

2026/10/16 15:55:42 阅读更多 →
Java实现IEC104主站客户端:从协议解析到高并发实战

Java实现IEC104主站客户端:从协议解析到高并发实战

简介:面向电力系统自动化与微电网领域的开发、运维及科研人员,基于IEC104协议的主站客户端程序提供了一套可落地的远程监控与数据采集实现。程序围绕遥信遥测解析、遥控遥调命令下发两条业务主线展开,使用多线程Socket通信机制应对多连接与实…

2026/10/16 13:28:38 阅读更多 →

最新新闻

SPACE沙箱生命周期完全指南:Running/Paused/Suspended三种状态如何选?附pause/suspend/wake实战

SPACE沙箱生命周期完全指南:Running/Paused/Suspended三种状态如何选?附pause/suspend/wake实战

【免费下载链接】SPACE Sandboxed Platform for Agentic Code Execution: pluggable-runtime sandboxes for running agent and user code in isolation. 项目地址: https://gitcode.com/gh_mirrors/space34/SPACE 点击查看 免费下载 SPACE 是一款面向 AI Agent 的…

2026/10/18 22:15:33 阅读更多 →
为什么大模型需要4bit量化?InternVL2-26B-AWQ的AWQ量化原理(W4A16)深度详解

为什么大模型需要4bit量化?InternVL2-26B-AWQ的AWQ量化原理(W4A16)深度详解

【免费下载链接】InternVL2-26B-AWQ 项目地址: https://ai.gitcode.com/OpenGVLab/InternVL2-26B-AWQ 点击查看 免费下载 InternVL2-26B-AWQ 是上海 AI Lab 开源多模态大模型 InternVL2-26B 的 4bit AWQ 量化版,采用 W4A16(权重 4bit、激活 …

2026/10/18 22:15:33 阅读更多 →
肾小管 上皮间质转化(EMT )体外评价模型:云克隆猫肾小管上皮细胞产品解读

肾小管 上皮间质转化(EMT )体外评价模型:云克隆猫肾小管上皮细胞产品解读

肾小管上皮细胞是肾脏实质最主要的功能细胞,在重吸收、尿液浓缩、毒素代谢中发挥核心作用,也是急性肾损伤、慢性肾病、肾纤维化发病的首要靶细胞。正常 RTEC 可完成葡萄糖、电解质、小分子蛋白重吸收,维持肾内稳态;当遭遇缺血、毒…

2026/10/18 22:15:33 阅读更多 →
飞控计算机硬实时操作系统选型与调度设计实战

飞控计算机硬实时操作系统选型与调度设计实战

1. 飞控计算机对操作系统的要求远不止"实时"两个字很多人第一次接触飞控计算机,看到"硬实时操作系统"这个词,第一反应就是"快"。但如果你真拿一个跑分很高的通用系统往飞控上装,大概率连地面测试都过不了。飞控…

2026/10/18 22:15:33 阅读更多 →
WPF依赖属性底层机制与避坑指南:从绑定、优先级到实战调试

WPF依赖属性底层机制与避坑指南:从绑定、优先级到实战调试

简介:Windows Presentation Foundation(WPF)中,依赖属性(DependencyProperty)是支撑数据绑定、样式与模板的关键底层机制。这份资源围绕依赖属性定义、注册流程、读写访问方式、属性更改通知回调以及元数据…

2026/10/18 22:15:32 阅读更多 →
BrowserSkill 实战:用 CLI 让 AI agent 稳定操控浏览器

BrowserSkill 实战:用 CLI 让 AI agent 稳定操控浏览器

1. BrowserSkill 到底解决了什么问题第一次看到 BrowserSkill 这个名字,我下意识以为又是一个浏览器插件。真正用起来才发现,它压根不是插件,而是一套让 AI agent 直接操控浏览器的技能层。说白了,它把"打开网页、点击按钮、…

2026/10/18 22:14:32 阅读更多 →

日新闻

基于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 阅读更多 →