如何查看Unity中ML-Agent生成的.demo文件内容与结构?
查看Unity ML-Agent .demo文件内容与结构的方法
为什么文本查看器打开显示乱码
.demo文件是二进制序列化格式,并非纯文本,直接用普通文本编辑器打开自然会显示无法识别的乱码,必须用ML-Agent专属工具或代码解析。
官方工具解析步骤
ML-Agent自带命令行工具可将二进制.demo文件转为可读的JSON格式:
- 执行以下命令(替换路径为你的实际文件路径):
mlagents-learn --convert-demo path/to/your/demo_file.demo --output-path path/to/output.json - 转换后的JSON文件可直接用文本编辑器打开,能清晰看到每一步的状态、动作、奖励等完整数据。
自定义代码解析(Unity项目内)
如果需要在Unity中直接读取.demo文件内容,可使用ML-Agent提供的DemoReader类:
- 脚本中引入命名空间:
using Unity.MLAgents.Demonstrations; - 编写读取逻辑示例:
var demoReader = new DemoReader("Assets/YourDemoPath/TargetDemo.demo"); foreach (var stepData in demoReader.DemonstrationList) { // 获取单步核心数据 var observationState = stepData.State; var agentAction = stepData.Action; var stepReward = stepData.Reward; // 按需打印或处理数据 Debug.Log($"当前步骤奖励:{stepReward},执行动作:{agentAction}"); }
.demo文件的数据结构说明
每个.demo文件由一系列演示步骤组成,每一步核心数据包含:
- 状态(State):对应Agent脚本
CollectObservations方法收集的观测数据,可能是数值向量、压缩后的视觉图像等。 - 动作(Action):智能体执行的动作值,离散动作为整数类型,连续动作为浮点数数组。
- 奖励(Reward):环境返回给智能体的单步奖励,为浮点数。
- 元数据:包含演示版本号、智能体ID、时间戳等辅助信息。
内容的提问来源于stack exchange,提问作者Oksisiya
相关产品推荐
相关产品推荐

