从生物神经元到PyTorch:神经网络原理与训练实践
最近总有人问我入门深度学习到底该先看什么我的答案一直没变过——从大脑神经元到PyTorch把神经网络这条主线一次跑通。神经网络不是高深莫测的黑魔法它的设计灵感来自生物神经元而今天你只需要几行PyTorch代码就能亲手训练一个会识别手写数字的模型。这篇文章不打算堆公式吓人而是把“神经元怎么工作——网络怎么学习——PyTorch怎么落地——训练踩了哪些坑”这条线完整串起来。读完你会得到三样东西对神经网络原理的直觉理解、一个能直接跑通的PyTorch小模型、以及排查训练问题的方法清单。1. 大脑给了我们什么从生物神经元到M-P模型1.1 生物神经元的三要素接收、整合、输出要理解人工神经网络最好先看一眼真正的神经元。生物神经元的结构并不复杂大致可以拆成三个部分树突负责接收来自其他神经元的电信号胞体把这些信号累加起来轴突则负责把处理结果传递给下一个神经元。这里最关键的是“累加”和“阈值”两个概念。一个神经元会同时收到很多信号但它不会对每个信号都做出反应而是把所有信号加权汇总后和自身的“放电阈值”比较一下。总和超过阈值神经元就产生一个脉冲输出出去没超过就继续保持安静。这种“全或无”的机制保证了信号传递不是简单的叠加而是有取舍、有判断的。我常用一个生活场景来类比你本来在排队买奶茶某个朋友说“这家不好喝”你可能不为所动但如果接二连三来了好几个朋友都在劝你换一家这些意见汇总到一定程度超过了你心里的“换店阈值”你就真的转身走了。生物神经元做的事本质上就是这个“多方意见汇总再判断”的过程。1.2 M-P模型把神经冲动写成数学公式上世纪四十年代就有神经科学家和逻辑学家合作把上面的生物过程抽象成了最早的神经元数学模型也就是后来大家常说的M-P模型。这个模型几乎没有生物细节只保留了三件事输入、加权求和、阈值判断。假设一个神经元收到 n 个输入信号 x1, x2, ..., xn每个信号对应一个权重 w1, w2, ..., wn那么神经元的“净输入”就是加权和再加一个偏置项z w1x1 w2x2 ... wn*xn b然后把 z 放进一个阶跃函数z 大于 0 就输出 1小于等于 0 就输出 0。这就是最原始的人工神经元。现在的神经网络哪怕再复杂跑到最底层每一个“神经元”干的事情依然是这句老话做一次加权求和再过一层激活函数。顺着这个思路看神经网络其实一点也不神秘。它就是用大量简单的“加权求和非线性激活”单元堆叠起来让整个系统具备拟合复杂函数的能力。M-P模型本身还不能算“会学习”因为权重是人工设定好的但它给后续所有工作搭好了舞台。1.3 感知机第一次让机器自己改参数真正让神经网络获得“学习”能力的是上世纪五十年代末提出的感知机模型。感知机的结构跟M-P模型几乎一样但多了一条极其重要的规则训练时如果预测错了就按照误差大小去调整权重。更新规则说起来也很直白如果真实标签是1模型却输出了0那就把对应输入为正的权重调大一点让这类信号更容易“点亮”神经元反过来如果真实标签是0模型却输出了1就把相关权重调小。公式写下来就是 w ← w 学习率 * (真实值 - 预测值) * 输入。这个过程就是“学习”最原始的样子。感知机当时被证明能解决不少线性分类问题比如判断一个输入是“与”还是“或”但它很快暴露了一个致命短板解决不了异或XOR问题。异或的边界不是一条直线能划开的而感知机本质上是个线性分类器它只能画直线。这个失败一度让神经网络研究进入低潮但也逼出了后来的关键转折——用多层神经元、加入非线性激活函数。单个神经元单兵作战只能画直线几个神经元叠成多层才能画出弯弯曲曲的决策边界。这就是隐藏层的意义。2. 前向传播与反向传播神经网络的两条高速公路2.1 前向传播数据从输入走到输出的过程一个标准的三层网络通常由输入层、隐藏层、输出层组成。数据进入输入层后会依次经过每一个全连接层。每一层的计算都遵循同一个模板先做线性变换再过非线性激活函数。也就是说隐藏层的第一层计算是 a1 f(W1x b1)第二层是 a2 f(W2a1 b2)最后输出层再做一次线性变换得到预测值。这里的 W 是权重矩阵b 是偏置向量f 是激活函数。你可能会想既然每一层都是线性变换的叠加多层又有什么意义恰恰因为引入了非线性的激活函数多层网络才能拟合非线性关系。如果去掉激活函数不管堆多少层数学上都能合并成一层线性变换——那整个网络的表达能力就退化成了线性模型。激活函数就好比给网络注入了“曲线表达能力”没有它深度就是个空壳。前向传播本身没有任何“学习”的动作它只是把输入一步步变换成预测值。真正让网络变强的是后续两个环节算误差的反向传播以及更新参数的优化器。2.2 激活函数怎么选从阶梯函数到ReLU激活函数是神经网络里最容易忽略却极其关键的小零件。下面表格列出了几种主流激活函数的常见特性供新手直接对照参考。激活函数输出范围主要优点主要缺点建议适用场景Sigmoid(0, 1)输出可理解为概率历史经典两端梯度饱和深层网络易梯度消失输出均值不为0二分类输出层早期网络Tanh(-1, 1)零中心对称梯度略好于Sigmoid同样有饱和区深层仍易梯度消失全连接隐藏层旧方案ReLU[0, ∞)计算快、正区间梯度恒为1深度网络收敛远快于Sigmoid负区间梯度为0部分神经元可能“死掉”大多数现代网络隐藏层的默认首选Softmax(0,1)且和为1能把一组分数变成概率分布仅用于输出层多分类问题的输出层我个人的经验是隐藏层优先用ReLU输出层根据任务选——回归问题不加激活或直接用线性输出多分类问题用Softmax。Sigmoid和Tanh在深层网络里会造成梯度信号逐层衰减训练到前面的层时权重几乎学不动了这也是“梯度消失”问题的一个来源。2.3 损失函数给模型的表现打分有损失函数神经网络才知道自己错得有多离谱。回归任务最常用的是均方误差MSE算的是真实值和预测值差的平方均值越大说明偏差越多。分类任务则更推荐交叉熵它衡量的是预测概率分布和真实分布的差异。为什么分类问题不建议用MSE而优先选交叉熵用我自己的体会说交叉熵配上Softmax在预测错误越严重时给出的梯度越大模型能更快纠正错误。而MSE配合Softmax时当输出太接近0或1梯度会被压得特别小训练慢得让人心急。理论上的解释是这涉及概率输出的似然估计但你可以先记住这个实操结论分类任务默认选择交叉熵损失它能让你少走很多弯路。2.4 反向传播让误差从输出层流回每一层前向传播完成一轮预测后损失函数会算出一个误差值。接下来网络要搞清楚一个问题每一层的每一个权重分别对最终误差贡献了多少这就要用反向传播算法。反向传播的本质是链式求导。损失对某个权重的梯度等于损失对预测输出的偏导乘以预测输出对该层线性输出的偏导再乘以该层线性输出对这个权重的偏导。这个链条一层一层往回穿每一层的局部导数像接力一样传下去。理解成投篮练习可能更顺教练看到最终命中率下降会从投篮手型、起跳力度、接球位置逐个环节分析每个环节的“责任系数”一起决定了下一轮训练该重点纠正谁。如果让你徒手实现反向传播确实繁琐又容易出错。好在现代深度学习框架已经把这件事彻底自动化了。在PyTorch里只要你把网络定义成一系列张量运算框架会自动记录计算图调用 loss.backward() 之后每个参数的 gradient 就自动算好了。这也是新手现在能快速上手的重要原因——你暂时不需要手写链式法则但要理解它在背后帮了你多大忙。3. 在PyTorch中复现理论张量、自动求导与一个完整小网络3.1 张量带GPU加速和自动求导的“超强数组”初次接触PyTorch最先见到的数据类型是Tensor我叫它“张量”。你可以粗暴地把张量理解成NumPy数组的Pro版本它支持在CPU和GPU之间随意搬运能享受GPU并行计算带来的大幅加速而且每一个张量还能携带梯度信息。创建张量很简单比如 torch.zeros(3, 3) 生成一个3×3的零矩阵torch.tensor([1.0, 2.0, 3.0]) 直接创建一维张量。跟NumPy最大的区别在于当你给一个张量设置 requires_gradTruePyTorch会默默追踪所有跟它有关的运算以便后续自动求导。这是PyTorch作为现代深度学习框架最核心的生产力来源。3.2 自动求导计算图帮你搞定链式法则自动求导的原理可以这样理解你每执行一次张量运算PyTorch就偷偷在后台记录一条“运算节点”把输入、输出和运算类型都存进一张计算图里。进行反向传播时框架沿着这张图的反方向逐节点计算梯度最后把梯度累积到每个叶子节点上。例如x torch.randn(3, requires_gradTrue) y x * 2 z y.sum() z.backward() print(x.grad) # 得到每个位置的梯度应该是2.0如果不用 requires_gradPyTorch不会白费力气记录运算图这也是推理阶段能够省内存、加速的原因之一。对新手来说记住一个关键点就行需要被梯度更新的参数必须设置 requires_gradTrue不需要更新的输入数据保持默认False就好。3.3 打造一个手写数字识别网络下面我用一个常见的手写数字识别任务来演示如何把前面讲的理论全部落地。这个任务会把一张28×28的灰度图片784个像素值作为输入最终输出10个类别的得分。import torch import torch.nn as nn class SimpleNet(nn.Module): def __init__(self): super().__init__() self.fc1 nn.Linear(28 * 28, 128) self.fc2 nn.Linear(128, 64) self.fc3 nn.Linear(64, 10) def forward(self, x): x torch.relu(self.fc1(x)) x torch.relu(self.fc2(x)) x self.fc3(x) # 输出层不加激活后面配合CrossEntropyLoss return x model SimpleNet()这段代码里最重要的约定是继承 nn.Module在init里定义层结构在 forward 里定义前向计算逻辑。你可能注意到输出层没有Softmax这是刻意为之。因为 PyTorch 的 nn.CrossEntropyLoss 内部已经包含了Softmax和交叉熵计算如果在forward里先过了一遍Softmax反而会造成数值不稳定或梯度异常。3.4 训练循环的三件套zero_grad、backward、step训练一个神经网络本质上就是反复执行同一个循环喂数据、算损失、反向传播、更新参数。我见过很多新手第一次写训练代码时搞不清下面这三行各自的作用其实它们的顺序和逻辑非常明确。criterion nn.CrossEntropyLoss() optimizer torch.optim.Adam(model.parameters(), lr1e-3) for images, labels in train_loader: # 1. 梯度清零清空上一轮留下的梯度 optimizer.zero_grad() # 2. 前向计算 outputs model(images.view(-1, 28 * 28)) loss criterion(outputs, labels) # 3. 反向传播计算每个参数的梯度 loss.backward() # 4. 参数更新沿梯度下降方向走一步 optimizer.step()optimizer.zero_grad() 是最容易被忽略的一步。PyTorch 的梯度默认是“累积”的——如果不手动清零上一轮算出的梯度会跟这一轮的梯度叠加在一起导致参数更新方向完全错乱。我习惯把它类比成一块小黑板每轮训练前要先把上一轮的演算过程擦干净再写新的不然新旧笔迹叠在一起谁也没法看清。整个循环跑上几十个epoch之后损失会逐步下降模型的准确率也随之上升。这个“梯度下降—更新—再下降”的循环就是神经网络学习的核心闭环。3.5 推理模式model.eval() 与 torch.no_grad()训练完成后做推理很多人直接拿训练模式下的模型去跑结果发现结果不稳定甚至显存爆炸。原因是训练模式下模型内部的Dropout层还在随机丢神经元BatchNorm层还在用当前批次统计量做归一化这会让输出带随机性再有就是没有关闭梯度计算计算图白白占着一大块显存。推理阶段标准姿势是加上两行model.eval() with torch.no_grad(): outputs model(test_data)第一行把模型切到推理模式关闭随机行为第二行告诉框架不用记录计算图省显存又提速。千万别图省事跳过这两步尤其是当你后面要部署模型时它们能直接决定线上预测是否稳定。4. 训练中的暗坑学习率、过拟合和收敛问题排查4.1 学习率选不好训练直接报废学习率可能是神经网络里最敏感的一个超参数。学习率太大参数每一步跨越幅度过大损失曲线会震荡甚至直接变成NaN学习率太小参数像蜗牛爬行训练半天损失纹丝不动。理想情况下损失曲线应该平滑下降不震荡也不停滞。我的调参习惯是用Adam优化器时先试 lr1e-3这通常是个稳妥的起点。如果损失震荡得很厉害就把学习率降到 1e-4或者加一个预热warm-up阶段如果下降太慢可以试着提到 3e-3但要多留神曲线。更省心的做法是配合学习率调度器比如 StepLR 每若干轮乘一个衰减系数或者用 ReduceLROnPlateau 在损失不下降时自动调低学习率。如果你发现损失从训练一开始就是NaN大概率是学习率过大也可能来自输入数据里有太大的数值。先缩小学习率看看很多时候问题立刻消失。4.2 过拟合训练越来越好验证反而变差训练损失一直在降测试集效果却越来越差这是几乎所有新手都会撞上的问题——过拟合。网络太“聪明”把训练样本里的噪声和特殊模式也背了下来而不是学到真正的通用规律。应对过拟合我按优先级推荐四招增加训练数据或者做数据增强旋转、缩放、裁剪、加噪声让模型见更多“变体”。引入 Dropout比如 nn.Dropout(0.5)训练时随机让一部分神经元失活强迫网络不依赖少数几个“明星神经元”。添加权重正则化L2或早停验证集指标不升就提前终止训练。减小模型容量把隐藏层神经元数减少别用大炮打蚊子。Dropout 的原理我常用一句话解释它不是在削弱网络而是强制网络学会“团队协作”。每个神经元都可能被临时抽走模型自然不敢把宝全押在某几个节点上最终学到的特征分布会更鲁棒。4.3 损失不下降的排查链路先查数据再查模型训练卡住不动时新手容易一头扎进调参的茫茫大海其实很多问题出在更基础的地方。我总结了一个排查顺序按这个顺序来找能省几个小时。现象常见原因排查手段损失为NaN学习率过大、梯度爆炸、输入有NaN降低lr检查数据有无异常值打印梯度数值损失一直不变激活死区、标签错位、梯度消失检查ReLU输出是否大量为0抽查输入输出维度是否对齐训练好测试差过拟合加Dropout、数据增强观察训练与验证损失的分叉点准确率锁死在某个值类别不均衡、学习率过小查看类别分布尝试更大lr或换优化器我自己踩过最深的一个坑是 CrossEntropyLoss 的输入和标签形状没对齐。当时损失明明在下降可准确率纹丝不动折腾一下午才发现数据流管线里把 batch 维度弄反了。这件事让我养成了一个习惯遇到任何收敛问题永远先用一小批数据打印出每一步的张量形状确认数据流没有问题再去调模型。数据流没问题再检查梯度是否消失或爆炸最后才动学习率。5. 从全连接到现代架构你的网络还能长成什么样5.1 卷积神经网络更适合图像的参数共享方案全连接网络处理图片有个致命问题一张不大不小的图片动辄几万个像素全连到下一层会产生天文数字的参数量训练和存储都吃不消。卷积神经网络CNN就是为了解决这个问题而来的。CNN的核心思路是参数共享。一个小尺寸的卷积核比如3×3在整张图上滑动同一组权重扫描不同区域提取出边缘、纹理、形状等局部特征。你可以把它想象成一把特制的“刷子”在整张图每个角落刷一遍不同的刷子刷出不同的纹路。池化层则在卷积之后进一步压缩空间尺寸保留主要特征、降低计算量。CNN几乎统治了图像领域原因就是它更贴合图像数据的局部相关性。5.2 循环神经网络给网络装上“记忆”处理序列数据文本、语音、时间序列时全连接网络不具备时间维度的记忆能力。循环神经网络RNN则在每一步计算中把当前输入和上一个时间步的“隐藏状态”一起送入网络让信息能够跨时间步传递。因为这种递归结构RNN能建模“上下文依赖”比如预测句子下一个词时要结合前面的词义。但它也有梯度消失的困扰对长序列建模效果有限。后来的 LSTM 和 GRU 通过精巧的门控机制改善了长期记忆能力一度成为序列建模的主流。不过如今很多序列任务已经被下面要说的Transformer架构取代了。5.3 Transformer和注意力机制当下最主流的方向现代大模型几乎清一色基于Transformer。它的核心组件叫自注意力机制做的事情用一句话概括序列里的每个位置都去跟其他所有位置“打照面”根据相关程度计算加权权重再把这些信息融合起来。更形象地说自注意力像班级讨论。每个人发言前会先听其他同学说了什么然后按“跟我的问题相关度”决定重点听谁的、参考谁的。每位同学都被所有同学的发言影响这个影响权重不是手工指定的而是网络自己学出来的。Transformer比RNN好在能并行计算整个序列又能灵活捕捉长距离依赖所以成了大模型时代的基础架构。5.4 给你的学习路线别被花哨结构迷住眼回到最初的问题从大脑神经元到PyTorch这条路为什么值得先走通因为无论CNN、RNN还是Transformer拆到最后底层依然离不开“线性加权求和 非线性激活 损失函数 反向传播”这套基本盘。你理解了本文里的三层全连接网络和PyTorch的自动求导再去看任何现代模型本质上都是在看“层做了什么操作、参数怎么组织、梯度怎么流”。我给新手的建议非常直接动手推一遍三层网络的反向传播梯度公式不用多复杂但一定要知道链式求导每一步对应哪一行代码。用PyTorch把上面的简单网络跑通训练一个能识别手写数字的模型先追求100个epoch不报错。再去看CNN或者Transformer的源码你会发现自己能读懂很多地方因为底层思路是相通的。写这篇文章时我又想起自己第一次把网络训练到90%以上准确率的那个晚上。回头琢磨真正让我开窍的并不是背住某条公式而是亲手把“神经元→加权求和→非线性激活→反向传播→参数更新”这条链路完整拆装了一遍。神经网络以后会长出更多复杂结构但不管它穿上什么新外衣内里的那块基石始终没有变。希望这篇把基石讲透的文章能帮你稳稳迈出第一步。

相关新闻

Python爬虫实战:微信公众号文章批量采集与反爬对抗

Python爬虫实战:微信公众号文章批量采集与反爬对抗

简介:这份资源是面向 Python 爬虫初学者与 Web 数据采集爱好者的微信公众号文章抓取实战项目,聚焦于从微信公众平台批量获取公众号所有文章的 URL,适合已掌握 Python 基础语法、希望进阶到真实站点采集的开发者练手。压缩包共 30 个文件&…

2026/10/18 3:37:18 阅读更多 →
SpringBoot项目部署实战:从JVM参数到systemd托管与发布回滚

SpringBoot项目部署实战:从JVM参数到systemd托管与发布回滚

先聊几句题外话。我见过太多项目在本地跑得好好的,一上服务器就各种花式出问题,时间差8小时、中文乱码、进程三天两头挂掉、日志不知道去哪了、升级一次心惊胆战。这些事见多了之后我慢慢意识到,SpringBoot项目部署这个看似基础的话题&#x…

2026/10/18 3:37:18 阅读更多 →
Ubuntu挂载报错WRONG FS TYPE、BAD OPTION、BAD SUPERBLOCK详解

Ubuntu挂载报错WRONG FS TYPE、BAD OPTION、BAD SUPERBLOCK详解

1. 项目概述:当Ubuntu说“WRONG FS TYPE, BAD OPTION, BAD SUPERBLOCK”时,它到底在喊什么你刚给Ubuntu服务器加了一块全新的机械硬盘,或者把旧电脑里拆下来的SSD接进新机器,满怀期待地执行sudo mount /dev/sdb1 /mnt/data——结果…

2026/10/18 3:37:18 阅读更多 →

最新新闻

Tomcat 7.0.108 部署实战:JDK 版本选择、环境变量配置与常见启动问题排查

Tomcat 7.0.108 部署实战:JDK 版本选择、环境变量配置与常见启动问题排查

简介:Apache Tomcat 7.0.108 是一款开源的 Java Servlet 容器,主要用于运行 JSP 与 Servlet 等 Java Web 应用。这份 zip 压缩包面向 Java Web 开发者、运维人员及计算机专业学生,帮助其快速搭建本地服务器环境,完成 Web 项目的部…

2026/10/18 4:20:29 阅读更多 →
机器人十年演进:从固定程序到环境自适应智能体

机器人十年演进:从固定程序到环境自适应智能体

聊到机器人技术十年演进,我最直观的感受是:十年前的机器人更像一台会点数的机床,现在的机器人开始像一个有感官、会判断的操作员。十年前我在现场调试机械臂,拿着示教器一格一格地按点位,工件稍微偏一点就抓空&#xf…

2026/10/18 4:20:29 阅读更多 →
MATLAB手写K-means聚类算法及评价指标全解析

MATLAB手写K-means聚类算法及评价指标全解析

1. 项目概述与选题背景1.1 这个项目解决什么问题聚类分析在数据挖掘任务里属于频次特别高的前置步骤,而K-means又是聚类算法当中最基础、最常用的一把尺子。很多人学机器学习第一周就会接触K-means,原理看着就五行代码的事儿——选中心、算距离、更新中心…

2026/10/18 4:20:29 阅读更多 →
用HTML动画演示二极管工作原理:PN结与伏安特性可视化

用HTML动画演示二极管工作原理:PN结与伏安特性可视化

前阵子有朋友跟我抱怨,说“二极管工作原理”这一章在课本上翻来覆去就那几页,老师PPT里也画了PN结、画了耗尽层,上课听的时候觉得懂了,一做题就懵,尤其是“为什么正向导通、反向截止”这件事,脑子里始终没有…

2026/10/18 4:20:29 阅读更多 →
Vue3 + Webpack5 + Element Plus 环境搭建避坑指南

Vue3 + Webpack5 + Element Plus 环境搭建避坑指南

简介:这是一份基于 webpack5 搭建 Vue3 开发与生产环境的实战示例工程,面向希望熟悉 webpack5 新特性、掌握前端构建优化的初中级开发者。资源以 JavaScript 为主,配合 Vue 单文件组件与样式文件,完整演示了从开发调试到生产打包的…

2026/10/18 4:20:29 阅读更多 →
OpenClaw语音控制实战:多用户语音识别与声纹认证的权限隔离方案

OpenClaw语音控制实战:多用户语音识别与声纹认证的权限隔离方案

/* 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 4:19:29 阅读更多 →

日新闻

基于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/16 14:23:36 阅读更多 →