You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置saveUpdater=true后模型压缩包缺失updaterState.bin问题排查

问题原因及解决办法

你的问题出在使用的优化器是无状态的普通SGD,所以即使设置saveUpdater = true,也不会生成updaterState.bin文件。

关键细节:

  • 只有带状态的优化器(比如Momentum、RMSProp、Adam、Adagrad等)才会有需要保存的更新状态(比如动量项、累积的梯度平方等),这类优化器训练时会维护额外的状态变量,保存模型时需要把这些状态一并存入updaterState.bin。
  • 你代码中使用的是new Sgd(0.1),这是基础的随机梯度下降优化器,没有额外的状态需要保存,因此模型压缩包里不会生成updaterState.bin。

验证代码中的优化器设置:

MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
        .seed(seed)
        .activation(Activation.TANH)
        .weightInit(WeightInit.XAVIER)
        .updater(new Sgd(0.1)) // 这里是无状态的普通SGD
        .l2(1e-4)
        .list()
        // ... 后续层配置
        .build();

如何生成updaterState.bin:

如果需要保存优化器状态以便后续继续训练,只需将优化器替换为带状态的版本即可,比如改用动量SGD:

.updater(new Nesterovs(0.1, 0.9)) // 带Nesterov动量的SGD,有状态需要保存

或者Adam优化器:

.updater(new Adam(0.001)) // Adam优化器,有状态需要保存

使用这类带状态的优化器训练后,再调用ModelSerializer.writeModel(model, locationToSave, true),就能在压缩包中看到updaterState.bin文件了。

内容的提问来源于stack exchange,提问作者apollox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:13:27