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

ML-Agents TensorFlow模型推理模式运行报错求助:轴外维度不匹配

解决ML-Agents推理时的Off-axis dimensions must match错误

这个错误我之前在使用旧版ML-Agents和Unity组合时也遇到过,核心原因是Barracuda在执行张量拼接(Concat)时,除了指定的拼接轴之外,所有其他维度必须完全匹配。结合你使用的ML-Agents v0.7、Unity 2017和Python 3.6环境,下面是几个针对性的排查和解决步骤:

  • 检查训练与推理的观测空间一致性
    训练时你定义的观测空间(比如视觉传感器的分辨率、向量观测的维度数量)必须和Unity推理场景中Agent的观测设置完全一致。例如:

    • 如果训练时用的是84×84的RGB视觉观测,推理时不能改成64×64;
    • 如果训练时向量观测包含3个数值(比如飞机的俯仰、偏航、滚转),推理时也必须传入相同维度的向量。
      任何观测维度的不匹配都会导致拼接时非轴维度不一致,触发这个错误。
  • 重新导出训练模型
    ML-Agents v0.7的模型导出工具偶尔会因为环境依赖问题生成有维度缺陷的模型。你可以重新执行训练导出命令,确保导出过程没有报错:

    mlagents-learn config/trainer_config.yaml --run-id=your_run_id --save
    

    导出后检查生成的.onnx模型文件,确认输入输出的张量形状和训练时的配置一致。

  • 排查Unity端张量拼接逻辑
    在Unity的Agent代码中,找到拼接观测张量的位置(通常是在CollectObservations或推理前的数据处理部分),添加日志打印每个待拼接张量的形状:

    // 假设tensorsToConcat是你要拼接的张量数组
    foreach(var tensor in tensorsToConcat)
    {
        Debug.Log($"待拼接张量形状: {tensor.shape}");
    }
    

    运行游戏后查看日志,对比这些张量的形状,找到非拼接轴维度不匹配的那个张量,针对性调整其维度。

  • 确认Barracuda版本兼容性
    Unity 2017自带的Barracuda版本和ML-Agents v0.7的适配性有限,你可以尝试更新到ML-Agents v0.7官方推荐的Barracuda版本(当时对应Barracuda 0.1.x系列),避免因版本差异导致的张量处理逻辑bug。

  • 检查向量观测的归一化处理
    如果你的观测包含向量数据,确保训练和推理时的归一化方式完全一致。比如训练时将速度值归一到[0,1],推理时也必须执行相同的归一化操作,否则可能导致张量维度意外变化(比如误将一维向量变成二维)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:41:10