Keras激活函数可视化:用图像理解Sigmoid、ReLU与训练难题
有一段时间我做某个图像分类小项目训练曲线一直下不去。层数、学习率、优化器都调过了最后才怀疑到激活函数头上。说实话激活函数的公式我都能背但真到选型时帮上忙的居然是“看图像”。这次我用 Python 和 Keras 把常用激活函数全部画了出来包括 Sigmoid、Tanh、ReLU 家族、ELU、Swish、GELU 这些。画完以后很多问题一下子清楚了为什么 Sigmoid 堆多了梯度消失为什么 ReLU 会有“死区”为什么 LeakyReLU 常常是备胎首选。本文就把这套方法、完整代码和相关图像特征整理出来适合正在用 Keras 做模型、被训练不收敛或收敛过慢折磨的朋友。看完你也能自己动手把任何激活函数“拍一张照”。1. 为什么要把激活函数“画”出来看1.1 光背公式很难建立直觉激活函数的数学表达式并不复杂。Sigmoid 是 $1/(1e^{-x})$ReLU 是 $\max(0,x)$Tanh 是双曲正切。但公式只告诉我“在某个点等于多少”没有告诉我“整个变化趋势意味着什么”。举个具体例子Sigmoid 在 $x0$ 处的导数是 0.25这很多人都知道。但真正影响训练的是当 $x$ 走到 3 或 -3 时导数已经衰减到 0.05 左右走到 5 以上时梯度基本就是 0。这个“梯度几乎为 0”的区域有多大光看公式很难有体感但图像一出来两条曲线一对比你会立刻记住Sigmoid 两端是大片饱和区。我在调模型时经常遇到一种情况网络层数一多Loss 曲线先降一点点然后长时间横盘。这时候去翻每一层的梯度发现越靠近输入层梯度越小。原因往往就是中间藏了几个 Sigmoid梯度在反向传播时被连续“压缩”。如果把 Sigmoid 的导数曲线打印出来贴在显示器旁边这个问题早期就能被识别出来。1.2 看图像比看数值更接近“直觉”数值表当然也能反映函数行为比如列出 x -5 到 5 的输出值。但人脑处理曲线走势的能力比处理一长串数字强得多。曲线能一眼告诉你函数有没有上界、下界在哪个区间变化剧烈哪个区间趋于饱和导数是恒正、恒负还是分段变化是否有不可导的转折点负半轴是“死区”还是“漏电区”。这些特征直接对应到神经网络的训练表现。比如下界为负、上界为正的激活函数Tanh、SELU 等输出天然接近零中心化下一层更不容易全部收到同号输入而恒正的 Sigmoid 会导致后层输入全部为正这在深度网络中会引发参数更新方向受限的问题。所以我强烈建议不要只背公式画一次图。画完你对每个函数的“性格”会有一个完全不同的理解能直接用图像语言去判断某层该用什么激活函数。2. 用 Keras 搭一个“激活函数取景器”2.1 环境准备tensorflow matplotlib绘图脚本依赖很轻核心就三个库pip install tensorflow numpy matplotlibPython 版本建议 3.9-3.11TensorFlow 2.10 以上都可以。我本地用的是 TensorFlow 2.12下面的代码对 2.x 系列基本通用。如果你用的是 Keras 3.x需要确认后端是 TensorFlow 即可API 层面这里用到的基础接口没有变化。Matplotlib 版本没有硬性要求中文字体可能需要额外处理但本文图像标签我直接用英文省去字体烦恼。2.2 核心思路让 Keras 自己算结果而不是手推公式你可能会说“画激活函数图像自己用 numpy 实现一下公式不就行了”理论上可以但这里有一个很关键的理由让我坚持用 Keras 内置激活层来计算Keras 里的激活函数实现和你印象中的“标准公式”可能不是完全一致的。举两个例子leaky_relu在tf.nn.leaky_relu中的默认斜率是 0.2而keras.layers.LeakyReLU的默认斜率是 0.3。如果你自己用 0.01 当斜率手画一条曲线画出来的根本不是 Keras 模型里实际用的那个激活函数。selu是elu的缩放版本缩放系数是固定常数。手推容易漏掉缩放因子导致图像和 Keras 实际行为对不上。gelu在 TensorFlow 里有精确版本和近似版本之分不同版本图像在尾部有细微差异。为了避免“你画的是一套模型里跑的是另一套”直接让 Keras 自己计算激活输出最稳妥。我们要做的只是给模型一个单输入单输出的激活层喂进去一段均匀分布的 x 值把输出 y 取出来画图。2.3 通用绘图函数与代码代码结构很简单核心函数不到 20 行import numpy as np import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.keras import layers, Model def make_activation_model(activation): 构建一个只有激活层的 Keras 模型 inp layers.Input(shape(1,)) out layers.Activation(activation)(inp) return Model(inp, out) def plot_activation(activation, save_path, x_range(-6, 6), num_points500): 绘制激活函数曲线及其导数曲线 x np.linspace(x_range[0], x_range[1], num_points).reshape(-1, 1) model make_activation_model(activation) y model.predict(x, verbose0).flatten() x_flat x.flatten() # 用 numpy 差分近似导数足够观察整体趋势 dy np.gradient(y, x_flat) fig, ax plt.subplots(figsize(7, 5)) ax.plot(x_flat, y, labely, linewidth2.5) ax.plot(x_flat, dy, --, labeldy/dx, linewidth1.5) ax.axhline(0, colorgray, linewidth0.8) ax.axvline(0, colorgray, linewidth0.8) ax.set_xlabel(x) ax.set_ylabel(y) ax.set_title(activation) ax.legend() ax.grid(alpha0.3) fig.savefig(save_path, dpi150, bbox_inchestight) plt.close(fig)调用方式更简单for name in [ sigmoid, tanh, relu, leaky_relu, elu, selu, softplus, softsign, swish, gelu, ]: plot_activation(name, f{name}.png)运行完当前目录会多出 10 张 PNG 图片每张图上同时有激活函数实线和导数虚线。2.4 为什么要把导数曲线叠加在一起不少教程只画函数曲线不画导数。但我觉得导数曲线才是判断训练行为的关键。反向传播的过程本质上是损失对每层输入的偏导逐层往回乘。这个“乘”的过程中激活函数的导数扮演核心角色。如果导数在某段区间内接近 0那么该区间对应的神经元即使被激活对梯度传播也几乎没有贡献一旦很多层都饱和整体梯度就会指数级衰减。把导数曲线和函数曲线画在同一张图上你就能直观看到哪个区域“在干活”哪个区域“在沉睡”。这正是选择激活函数时最重要的参考信息。np.gradient是数值差分近似可能在高频噪声区域不太精确但激活函数都是光滑或分段光滑的500 个采样点足够还原真实走势完全够用。3. 饱和型激活函数Sigmoid 与 Tanh 的图像语言3.1 Sigmoid两端平缓输出且不关于原点对称Sigmoid 的图像应该是最早被大家认识的一条从 0 上升到 1 的 S 形曲线。画出来之后有几个细节值得盯住看值域是(0, 1)也就是说输出永远正数曲线在 x0 附近斜率最陡但最大导数也只有 0.25从 x3 左右开始曲线基本趋于水平导数降到 0.05 以下x±6 时导数已经小到几乎看不见。这些图像特征直接解释了三个训练中的经典问题第一梯度消失。多层感知机如果隐藏层全用 Sigmoid反向传播时每一层梯度都要乘一个小于等于 0.25 的数十层下来梯度变成原来的 $0.25^{10} \approx 9.5 \times 10^{-7}$早没了。这就是训练曲线横盘的重要原因。第二输出非零中心化。Sigmoid 输出全部为正下一层的输入全部为正在反向传播时权重梯度往往会同号导致参数更新轨迹呈锯齿状收敛速度变慢。第三计算开销大。虽然现代设备上指数运算不是瓶颈但对比 ReLU 的“取最大值”Sigmoid 显然更重。但 Sigmoid 也不是一无是处。二分类输出层配合binary_crossentropy它输出的概率解释性仍然不可替代。图像告诉我们只要把它放在最后一层中间层不要碰它问题就不大。3.2 Tanh零中心化解决了半个问题Tanh 的图像和 Sigmoid 很像但有两个关键变化值域变成(-1, 1)穿过原点关于原点对称最大导数是 1比 Sigmoid 的 0.25 大了四倍。画出来以后你会看到它在 x0 附近更“陡峭”也就是说同样数量的输入变化Tanh 能产生更大的梯度响应。对于中等层数的网络Tanh 比 Sigmoid 更容易训练这就是原因。但要注意Tanh 的两端依然是饱和区。x 到 ±3 以后导数同样快速衰减到接近 0。所以它只是“半个解决方案”解决了零中心化没有解决饱和问题。在很深的网络中Tanh 照样会出现梯度衰减只是比 Sigmoid 慢一些。我自己的经验是Tanh 在 RNN 类模型和某些自编码器的中间表示里仍然有价值但在标准 CNN 或全连接网络中它更多被 ReLU 家族取代。图像上最直观的对比就是ReLU 正半轴导数恒为 1而 Tanh 只有在原点附近才能接近 1。激活函数值域最大导数零中心化两端饱和典型场景Sigmoid(0, 1)0.25否是二分类输出层Tanh(-1, 1)1是是RNN、自编码器4. ReLU 家族的图像形态与“死亡区”4.1 ReLU正半轴一条直线负半轴一条水平线ReLU 的图像是所有激活函数里最简单的负半轴 y0正半轴 yx在原点处有一个转角。但这张“简单”的图像承载了非常重要的意义。它的导数在正半轴恒为 1意味着反向传播经过 ReLU 层时梯度不会再被额外压缩。这是它能成为默认选择的核心原因数学上比 Sigmoid 和 Tanh 干净得多。不过图像也精准暴露了 ReLU 的问题负半轴导数恒为 0。一旦某个神经元的输入落到负区间梯度就是 0权重无法更新。如果大量神经元同时落入这个状态网络就进入“死亡 ReLU”状态表现为训练一段时间后某些层的输出几乎全是 0。实际项目中过大的学习率很容易引发这种情况。因为学习率过大会让权重更新幅度过大进而让更多输入变成负数接着这些神经元被“永久关闭”。图像上怎么识别呢如果你打印某个 Dense 层的输出发现大部分神经元输出都是 0且经过多个 epoch 都不恢复那就要考虑死区问题。4.2 Leaky ReLU 与 PReLU给负半轴留一条活路Leaky ReLU 图像看起来就是 ReLU 的“漏电版”负半轴不再是水平 0 线而是一条斜率很小的斜线。# 在 Keras 中直接使用内置名字即可 plot_activation(leaky_relu, leaky_relu.png, x_range(-6, 6))在 TensorFlow 的tf.nn.leaky_relu中默认 alpha 为 0.2所以画出来负半轴的直线斜率约 0.2并不是很多人默认的 0.01。如果你打开 Keras 的LeakyReLU层会发现keras.layers.LeakyReLU默认 alpha 又变成了 0.3。这两个默认值不一样实际使用中要看清楚别被名称迷惑。PReLU 是更进一步的版本alpha 不是固定超参而是可训练参数。模型会自己学出负半轴的斜率。这种灵活性让它在一些任务上表现比 Leaky ReLU 更好但也增加了过拟合风险。画 PReLU 图像时只能画某个固定 alpha 下的形态比如 alpha0.25 或 0.5真实模型训练完后要再单独画一次。我的经验是如果 ReLU 出现明显的死亡神经元第一替换项就是 Leaky ReLU因为它改动最小、几乎不会引入额外调参复杂度图像上也很好理解——负半轴有没有斜率决定了这个神经元是“真死”还是“假死”。4.3 ELU 与 SELU负半轴是一条曲线滑梯ELU 的图像更有意思正半轴是直线负半轴是一条渐近到负常数的曲线而且在原点处是平滑连接的。plot_activation(elu, elu.png) plot_activation(selu, selu.png)Keras 中 ELU 默认 alpha1.0所以 x 趋向负无穷时y 趋向 -1。这个“有下界”的特征让 ELU 既能缓解死亡 ReLU又不会让输出无限制地变成很大负数。同时它的导数在负半轴不是固定常数而是逐步变化理论上能让梯度更平滑地流经负区间。SELU 是 ELU 的缩放版本图像看起来“更高一些”正半轴不再是 yx而是 yscale*x负半轴渐近线也不再是 -1而是 scale * alpha * (-1)大约在 -1.758 左右。用 SELU 有一个非常容易忽略的坑它只有在配合lecun_normal初始化、并且网络结构比较“规整”时才能实现自归一化。如果你在 Keras 里直接用Dense(64, activationselu)却忘了设置kernel_initializerlecun_normal那 SELU 的优势基本发挥不出来。这个细节画完图之后反而更容易记住。激活函数负半轴行为正半轴行为原点平滑主要优势ReLU恒为 0yx否梯度不衰减简单Leaky ReLU固定斜率斜线yx否缓解死亡 ReLUPReLU可学习斜率yx否自适应负斜率ELU渐近到 -alphayx是平滑、零均值更接近SELU渐近到约 -1.758yscale*x是自归一化5. 新派平滑激活函数Swish、GELU、Softplus 与 Softsign5.1 Swish/SiLU无上界但有下界的 S 形平滑曲线Swish 的定义是 $x \cdot \text{sigmoid}(x)$在 Keras 里可以直接用swish或者silu。它的图像相当有辨识度x 很小时y 趋近 0但不是完全等于 0x 在 -1 附近时y 会出现一个小幅下探最低点约为 -0.28x 为正后曲线进入近似线性的增长且没有上界。这种“有下界、无上界、处处平滑”的组合正好弥补了 ReLU 在负半轴完全死亡的问题同时保留了正半轴梯度不错的特性。它在深层卷积网络和 Transformer 类结构里经常被用来替代 ReLU。图像上看它的导数很有意思导数在负半轴不是恒 0而是有一段大于 0、一段小于 0最终接近 0然后再回升。这个“中间凹陷”的形状让负区间的神经元也能获得一定的梯度信号不至于直接死亡。VGG 级别的纯卷积网络里用 Swish 通常能带来稳定的提升但代价是计算量比 ReLU 大。图像上那点平滑优势是否值得换取额外计算需要根据项目规模做权衡。5.2 GELU一条“软饱和”的类 ReLU 曲线GELU 的完整定义是 $x \cdot \Phi(x)$其中 $\Phi(x)$ 是标准正态分布的累积分布函数。TensorFlow 里也提供了近似实现。图像上看它有点像一个被“磨圆了棱角”的 ReLUx 很小时y 缓慢逼近 0不是瞬间切断x 很大时y 约等于 x在 0 附近曲线是圆滑过渡而不是 ReLU 那种硬转折。为什么 GELU 会有效它本质上在用输入的“百分位”作为门控信号当 x 越小被保留的概率越低x 越大被保留的比例越高。这种软门控思想和 Dropout 有异曲同工之妙都是让模型对不同输入自适应地决定保留或丢弃信息。在 Transformer 和不少现代 CNN 里GELU 已经成为隐藏层标配。画图时注意TensorFlow 2.4 以上才比较稳妥地支持内置的gelu如果你的环境版本旧需要手动实现或升级。5.3 Softplus 与 Softsign两个“软”字开头的经典Softplus 是 $\log(1e^x)$图像可以看成 ReLU 的平滑版本。画出来的曲线在负半轴逐渐逼近 0正半轴则缓慢向直线 yx 靠拢。但它和 ReLU 有一个显著差异即使在正半轴Softplus 的导数也始终小于 1只是越来越接近 1。这意味着它对梯度同样有轻微的“压缩”作用。Softsign 是 $x/(1|x|)$图像长得像 Tanh但比 Tanh 更平缓收敛速度也更慢。它的值域同样是(-1,1)但两端饱和的过程更加渐进没有明显的“陡峭中心”。这两个函数在现代深度网络里不常见但它们在经典浅层模型、某些对输出平滑度要求较高的任务里仍然有使用空间。图像对比时最容易记住的是Softplus 和 ReLU 的形态差异集中在 x 接近 0 的区域Softsign 和 Tanh 的差异则集中在收敛速度上。6. Keras 中的实际选择与踩坑记录6.1 从图像特征反推选型规则画完这些图后我建立了一套很实用的选择逻辑分享出来供你参考二分类输出层用sigmoid因为它输出可解释为概率多分类输出层用softmax注意这是向量函数不要用单输入单输出的方式去画回归任务输出层通常不加激活函数或者用linear隐藏层默认先用relu如果出现死亡神经元换leaky_relu深度较大、希望梯度更平滑考虑swish或gelu需要自归一化且愿意配合初始化设置selulecun_normalRNN 类模型中间层常用tanh因为它输出有正有负更适合门控结构。任务类型输出层激活隐藏层参考二分类sigmoidrelu / leaky_relu多分类softmaxrelu / swish / gelu回归无 (linear)relu / elu自编码器tanh / lineartanh / elu6.2 在 Keras 中部署与自定义激活函数Keras 里使用激活函数有三种常见方式都很好用第一种直接写在层里model tf.keras.Sequential([ layers.Dense(64, activationrelu), layers.Dense(10, activationsoftmax), ])第二种用独立的Activation层model.add(layers.Dense(64)) model.add(layers.Activation(swish))第三种自定义激活函数并直接传进去import tensorflow as tf from tensorflow.keras import layers def mish(x): return x * tf.math.tanh(tf.math.softplus(x)) model tf.keras.Sequential([ layers.Dense(64, activationrelu), layers.Dense(32, activationmish), ])自定义函数注意一点如果函数里有需要训练的变量比如 PReLU 那种需要封装成Layer而不是简单的lambda。画图时也只能得到初始状态下的曲线训练后要重新绘图观察变化。6.3 画图与用图过程中的避坑记录最后说几个我实际踩过的坑第一预测输入必须保持二维。Activation层默认输入形状(None, 1)所以给它的 x 要reshape(-1, 1)只传一维数组会报维度错误。第二注意 keras 内置激活函数名的版本差异。老版本 Keras 可能没有gelu、swish运行时会直接报错。可以先打印tf.keras.activations.__dict__确认或者直接升级 TensorFlow。第三leaky_relu默认斜率有迷惑性。tf.nn.leaky_relu的 alpha 默认 0.2keras.layers.LeakyReLU默认 0.3。画图时先确认你用的是哪个接口否则图像会和模型实际行为不符。第四不要试图用单输入单输出的方式画softmax。Softmax 的结果依赖整个输入向量它不是一个“逐元素函数”。真想看它的行为应该固定向量其他分量画某个分量的输出曲面或者直接看 2D 情况下的联合输出分布。第五x 的范围不能太小。如果只画 -2 到 2Sigmoid 和 Tanh 的饱和区根本看不到很容易误以为它们在整个定义域上都很“陡”。我一般用 -6 到 6采样点 500 个既能看清中心区域也能看清两端的饱和形态。我保留了这个绘图脚本每次纠结激活函数选型时先跑一遍几秒钟出图。有一次做某图像处理 Demo模型老不收敛最后发现就是隐藏层误用了 Sigmoid。画完图看到那两条“平坦的尾巴”一切都明白了——换成 ReLU 后同样配置下损失很快开始下降。这种直觉不靠公式靠的就是图像在脑子里留下的形状。建议你也把这份脚本存好它值得成为你调参工具箱里的常备工具。

相关新闻

DPU深度解析:BlueField-2如何卸载网络、存储与安全

DPU深度解析:BlueField-2如何卸载网络、存储与安全

简介:这是一份面向数据中心架构师、云平台管理员与虚拟化开发者的 NVIDIA BlueField-2 DPU 官方解决方案,PDF 格式呈现。文档系统阐述第二代 DPU 如何将安全、存储、网络等基础设施任务从 CPU 卸载到 Arm 核心与专用加速引擎,覆盖裸金属云、虚…

2026/10/15 5:24:10 阅读更多 →
【新闻】链上共生,芯向未来!艾为电子战配投资粤芯半导体,产业链布局纵深推进

【新闻】链上共生,芯向未来!艾为电子战配投资粤芯半导体,产业链布局纵深推进

10月13日,粤芯半导体(股票代码301660)正式登陆深交所创业板。艾为电子作为粤芯半导体首次公开发行股票战略配售投资者之一参与本次发行,以资本为纽带、产业协同为牵引,向上游晶圆制造关键环节纵深延伸,产业…

2026/10/15 5:24:10 阅读更多 →
从模型轻量化到TFLite部署:边缘设备上的TensorFlow完整实践指南

从模型轻量化到TFLite部署:边缘设备上的TensorFlow完整实践指南

1. 边缘计算的落地困境与TensorFlow的角色先聊点实际的。这两年“边缘计算”四个字被各家厂商反复重提,趋势确实在那,但真正动手做过的人应该都有体会:把模型跑在云端和跑在边缘设备上,完完全全是两种工作量级。云端GPU随手就能跑…

2026/10/15 5:23:10 阅读更多 →

最新新闻

低代码与手写代码的边界:哪些场景该用低代码?

低代码与手写代码的边界:哪些场景该用低代码?

1. “手写代码已老”这句话,到底在哪条赛道上才成立我们上一家公司有个内部审批系统,开发团队花了三周做出来,上线两周后又因为审批流程调整要改代码,改完还要发版、走发布窗口,业务方在群里催了三次,研发负…

2026/10/15 6:09:41 阅读更多 →
ESLint报错Possible race condition解析:Vue异步竞态条件与修复方案

ESLint报错Possible race condition解析:Vue异步竞态条件与修复方案

第一次在CI日志里看到这行报错时,我一度以为是某个第三方ESLint插件新出的规则。后来翻规则文档才发现,这个提示Vue项目里高频出现的Possible race condition: xxxx might be reassigned based on an outdated value of xxxx,其实来自 ESLint…

2026/10/15 6:09:41 阅读更多 →
PyTorch深度学习实战:从动态图机制到模型部署全流程解析

PyTorch深度学习实战:从动态图机制到模型部署全流程解析

开篇得先说实话:我接触 PyTorch 的时间不算最早,但用下来这些年,它成了我主力深度学习框架。如果你正打算入门深度学习、或者从其他框架转过来,又或者已经在用但总感觉有些地方“知其然不知其所以然”,这篇东西就是写给…

2026/10/15 6:09:41 阅读更多 →
大厂RAG为何弃用纯向量检索?混合检索与多路召回实战解析

大厂RAG为何弃用纯向量检索?混合检索与多路召回实战解析

1. 从一个被问烂了的问题说起“为什么大厂 RAG 从不用纯向量检索?”这个问题我在不同场合被问过不下十次。有刚入行的朋友,有做了几年搜索转行做 RAG 的工程师,也有产品经理拿着技术方案来对需求。每次我都得从头讲一遍,因为这里面…

2026/10/15 6:09:41 阅读更多 →
射频信号发生器选型与实操:SMB100B与SMW200A对比解析

射频信号发生器选型与实操:SMB100B与SMW200A对比解析

做射频调试这行,信号发生器是桌面上最不该含糊的仪器之一。罗德与施瓦茨的SMB100B和SMW200A,我在好几个项目的测试环境里都遇到过:前者是典型的单通道模拟信号源,适合干净连续波和常规模拟调制;后者则是双通道矢量信号…

2026/10/15 6:09:41 阅读更多 →
AI编程协作的工程实践:责任边界、风险防控与团队规范

AI编程协作的工程实践:责任边界、风险防控与团队规范

1. 这不是“AI写代码”,而是工程师与工具的重新分工最近在几个技术社区里,总看到有人发截图:一段Python脚本,三行注释,AI生成了200行带单元测试的完整模块;也有人贴出生产事故报告,核心服务因AI…

2026/10/15 6:08:41 阅读更多 →

日新闻

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/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/14 7:53:34 阅读更多 →