Unity-ML-Agents-训练生成的results文件解读-PushBlock

news2024/9/21 4:38:34

前言

训练结果文件路径:E:\ml-agents-release_19\results\push_block_test_02(具体路径以自己电脑为准)

ML-Agents安装和PushBlock训练过程请见:(注意:push_block_test_02没有全部训练完毕)

参考博客:https://blog.csdn.net/aaaccc444/article/details/130253172

1. push_block_test_02

 1.1 PushBlock

1.1.1 checkpoint.pt

checkpoint.pt是ML-Agents在训练过程中保存的一个检查点文件包含了当前训练状态下所有的模型参数。这个文件是使用PyTorch的torch.save()函数进行保存的,其中包含了一个字典对象,记录了当前训练状态下所有的神经网络参数和优化器参数等。

保存检查点文件的主要目的是为了方便后续的模型推理或者继续训练

在推理阶段,可以加载之前保存的检查点文件,使用保存的模型参数进行模型预测;在继续训练阶段,可以加载之前保存的检查点文件,继续从上次训练的状态下进行训练,而不是从头开始重新训练,从而节省训练时间。

checkpoint.pt文件是PyTorch中的模型权重文件,可以使用PyTorch加载器(如torch.load())加载并读取其中的权重信息。具体使用方法可以参考PyTorch官方文档中的相关章节。

1.1.2 events.out.tfevents.1681914599.DESKTOP-EL11195.21140.0

(1)events.out.tfevents.*文件是TensorBoard的日志文件,记录了训练过程中的各种信息,如损失函数变化、准确率变化等。可以使用TensorBoard读取这些日志文件,生成相应的可视化图表。要使用TensorBoard查看events.out.tfevents.*文件,可以在命令行中运行以下命令:

tensorboard --logdir=path/to/logs

其中path/to/logsevents.out.tfevents.*文件所在的目录。执行命令后,TensorBoard会启动一个Web服务器,并自动在浏览器中打开相应的网页。在网页上,可以选择不同的图表,查看训练过程中各种信息的变化趋势。

例如:

(mlagents) E:\ml-agents-release_19>tensorboard --logdir=E:\ml-agents-release_19\results\push_block_test_02\PushBlock
TensorFlow installation not found - running with reduced feature set.
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.12.2 at http://localhost:****/ (Press CTRL+C to quit)

(2).1681914599.DESKTOP-EL11195.21140.0  这部分是 TensorBoard 保存日志时的标识,它由三个部分组成,分别是:

  • 1681914599:实验运行的时间戳。表示实验运行的开始时间,通常以为单位。在 TensorFlow 中,每个事件文件都带有一个时间戳,以帮助区分不同运行的事件。时间戳通常指的是从 1970 年 1 月 1 日 00:00:00 UTC 到某个时间的总秒数。这个时间戳是计算机中常用的一种时间表示方法,可以方便地进行时间的比较和计算。在ML-Agents中,时间戳一般用来表示实验运行的开始时间或者结束时间。
  • DESKTOP-EL11195:计算机名称。"DESKTOP-EL11195" 是运行 TensorBoard 的计算机的主机名(hostname)。它是计算机在网络上的唯一标识符,有助于区分不同计算机。
  • 21140.0:TensorBoard 进程 ID。在运行TensorBoard时,TensorBoard会自动分配一个唯一的进程ID(process ID)作为标识符,以便在多个TensorBoard实例同时运行时,可以区分不同的实例。这个进程ID通常是一个整数,而小数部分则是启动TensorBoard的时间戳。例如,21140.0表示进程ID为21140,启动时间戳为0。
  • 这些信息有助于在多个 TensorBoard 进程和计算机之间区分不同的日志。

1.1.3 PushBlock-16269.onnx

PushBlock-16269.onnx 是一个模型文件,用于在 ML-Agents 中进行强化学习训练。ONNX(Open Neural Network Exchange)是一种开放式格式,用于表示深度学习模型。在 ML-Agents 中,训练结束后会将训练好的模型保存成ONNX格式的文件,供后续推理使用。在这个例子中,PushBlock-16269.onnx 应该是训练到特定步骤时生成的模型文件,其中的数字“16269”表示生成该文件时的训练步骤数。

.onnx 文件可以使用 ONNX Runtime 或者其他支持 ONNX 格式的深度学习框架打开。

以下是使用 Python 和 ONNX Runtime 打开 .onnx 文件的示例代码:

import onnxruntime

# 加载模型
model_path = "path/to/model.onnx"
session = onnxruntime.InferenceSession(model_path)

# 输入数据
input_data = # 生成输入数据,格式为 numpy array

# 预测结果
output = session.run(None, {'input': input_data})

# 处理输出数据
# ...

需要注意的是,需要根据模型的输入、输出节点的名称和形状,来生成对应格式的输入数据。同时,不同的模型所依赖的库和运行环境也可能不同,需要根据具体情况进行安装和配置。

1.1.4 PushBlock-16269.pt

PushBlock-16269.pt 是在训练 PushBlock 场景时生成的模型权重文件,以 PyTorchstate_dict 格式保存了神经网络的权重参数。在训练结束后,根据用户在配置文件中设置的 keep_checkpoints 参数,训练过程中的一些关键步骤会被保存为检查点文件,以便在需要时恢复训练或者用于推理预测等任务。

PushBlock-16269.pt 文件包含了在训练到第 16269 步时的模型权重,可以用于加载模型并继续训练或进行推理预测等任务。这些模型参数通常保存在以 .pt 为后缀的文件中,文件名通常包含模型名称和训练步数等信息。

.pt文件是PyTorch模型保存的二进制文件,可以使用PyTorch加载模型

以下是一个简单的例子,加载.pt文件并使用模型进行推断:

import torch

# 加载模型
model = torch.load("model.pt")

# 准备输入数据,这里的例子是一个大小为 (1, 3, 64, 64) 的张量
input_data = torch.randn(1, 3, 64, 64)

# 模型推断
output = model(input_data)

需要注意的是,如果你的模型是在 GPU 上训练的,需要在加载模型之前先调用 torch.cuda.set_device() 指定使用哪个 GPU 设备,否则可能会出现无法加载模型的情况。如果你的模型在 CPU 上训练,可以忽略这个步骤。

# 指定使用第 0 个 GPU 设备
torch.cuda.set_device(0)

# 加载模型
model = torch.load("model.pt")

1.2 run_logs

 1.2.1 timers.json

timers.json是一个记录训练过程中各个阶段时间的日志文件,它可以帮助开发者了解训练过程中各个操作的耗时情况,以便进行调优。在ML-Agents训练过程中,训练时间被分成许多不同的阶段,如Policy Evaluation、Environment Step等,timers.json会记录每个阶段的名称、平均耗时、最大耗时和最小耗时等信息。

例如:

{
  "Policy.Evaluate": {
    "count": 1602,
    "mean": 0.00036819224020337235,
    "max": 0.002402134418487072,
    "min": 0.00023801150512695312,
    "stddev": 0.00010763366970706554,
    "total": 0.5895571707486954
  },
  "Environment.Step": {
    "count": 1602,
    "mean": 0.013603404338185787,
    "max": 0.08366680145263672,
    "min": 0.006999969482421875,
    "stddev": 0.007571674113586825,
    "total": 21.780235171318054
  },
  ...
}

以上是timers.json的一个例子,其中记录了两个阶段:Policy.EvaluateEnvironment.Step。对于每个阶段,记录了它在训练过程中出现的次数、平均耗时、最大耗时和最小耗时等信息。开发者可以通过查看timers.json文件来判断哪些操作的耗时比较长,从而优化训练过程。

1.2.2 training_state.json

training_state.json是ML-Agents训练过程中保存的状态文件,其中包含了训练过程中的一些信息。以下是一个例子:

"checkpoints": [
            {
                "steps": 262415,
                "file_path": "results\\push_block_test_02\\PushBlock\\PushBlock-262415.onnx",
                "reward": 4.971129466943881,
                "creation_time": 1681915062.002365,
                "auxillary_file_paths": [
                    "results\\push_block_test_02\\PushBlock\\PushBlock-262415.pt"
                ]
            },

这段代码是training_status.json文件中checkpoints的一个例子,它表示模型训练到某一步后生成的检查点文件的信息。其中:

  • steps:表示该检查点文件对应的模型训练步数。
  • file_path:表示该检查点文件的路径。
  • reward:表示该检查点对应的平均奖励值。
  • creation_time:表示该检查点文件的创建时间。
  • auxillary_file_paths:表示该检查点文件所需要的辅助文件的路径,比如训练过程中保存的优化器状态等。
"metadata": {
        "stats_format_version": "0.3.0",
        "mlagents_version": "0.28.0",
        "torch_version": "1.7.1+cpu"
    }

这段代码是 training_status.json 文件中的 metadata 字段,记录了训练状态的元数据信息,包括:

  • stats_format_version:训练统计数据格式的版本号。
  • mlagents_version:使用的 ML-Agents 工具包版本号。
  • torch_version:使用的 PyTorch 版本号。

1.3 configuration.yaml 

configuration.yaml 是 ML-Agents 工具中用来配置训练和推理参数的主要配置文件。该文件包含了许多用于定义智能体、环境、神经网络和训练参数的配置选项。在训练和推理过程中,ML-Agents 将从此文件中读取所需的配置信息,以确定如何进行训练和推理。

以下是 configuration.yaml 中的一些常用配置选项:

  • brain: 定义智能体的神经网络模型、智能体的决策策略、智能体的学习算法等。
  • environment: 定义环境的属性,如环境名称、观测空间、动作空间等。
  • hyperparameters: 定义训练的超参数,如学习率、批量大小、优化器等。
  • behaviors: 定义多个智能体以及它们之间的关系和交互方式。
  • checkpoint_settings: 定义训练期间保存检查点的参数,如保存频率、保存路径等。

通过修改 configuration.yaml 文件中的参数,可以更改 ML-Agents 的训练和推理行为,以适应不同的应用场景和任务需求。

configuration.yaml

default_settings: null
behaviors:
  PushBlock:
    trainer_type: ppo
    hyperparameters:
      batch_size: 128
      buffer_size: 2048
      learning_rate: 0.0003
      beta: 0.01
      epsilon: 0.2
      lambd: 0.95
      num_epoch: 3
      learning_rate_schedule: linear
      beta_schedule: linear
      epsilon_schedule: linear
    network_settings:
      normalize: false
      hidden_units: 256
      num_layers: 2
      vis_encode_type: simple
      memory: null
      goal_conditioning_type: hyper
      deterministic: false
    reward_signals:
      extrinsic:
        gamma: 0.99
        strength: 1.0
        network_settings:
          normalize: false
          hidden_units: 128
          num_layers: 2
          vis_encode_type: simple
          memory: null
          goal_conditioning_type: hyper
          deterministic: false
    init_path: null
    keep_checkpoints: 5
    checkpoint_interval: 500000
    max_steps: 2000000
    time_horizon: 64
    summary_freq: 60000
    threaded: false
    self_play: null
    behavioral_cloning: null
env_settings:
  env_path: null
  env_args: null
  base_port: 5005
  num_envs: 1
  num_areas: 1
  seed: -1
  max_lifetime_restarts: 10
  restarts_rate_limit_n: 1
  restarts_rate_limit_period_s: 60
engine_settings:
  width: 84
  height: 84
  quality_level: 5
  time_scale: 20
  target_frame_rate: -1
  capture_frame_rate: 60
  no_graphics: false
environment_parameters: null
checkpoint_settings:
  run_id: push_block_test_02
  initialize_from: null
  load_model: false
  resume: true
  force: false
  train_model: false
  inference: false
  results_dir: results
torch_settings:
  device: null
debug: false

1.4 PushBlock.onnx 

PushBlock.onnx是Unity ML-Agents Toolkit中的一个模型文件,用于存储已经训练好的深度学习模型。这个文件是使用ONNX(Open Neural Network Exchange)格式保存的,该格式被设计为在不同深度学习框架之间共享模型的标准格式之一。通过使用PushBlock.onnx文件,我们可以在Unity中使用训练好的模型,使智能体在环境中更好地执行任务。

推荐安装netron用于查看 onnx 模型结构(pip install netron

netron在线版本:浏览器中输入链接:https://lutzroeder.github.io/netro/

参考博客:https://blog.csdn.net/aaaccc444/article/details/130253172 

参考博客:网络可视化工具netron详细安装流程_pip install nerton_江大白*的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/448048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

同样是测试,朋友到了30k,我才12K,这份测试面试8股文确实牛

程序猿在世人眼里已经成为高薪、为人忠诚的代名词。 然而,小编要说的是,不是所有的程序员工资都是一样的。 世人所不知的是同为程序猿,薪资的差别还是很大的。 众所周知,目前互联网行业是众多行业中薪资待遇最好的,…

推荐几款项目管理工具,提高你的团队协作效率

如何管理团队才能使团队发挥最大的价值,如果团队缺少协作,就会因为团队的内耗和冲突导致项目无法完成,如何提高团队协作效率呢?我们可以借助团队协作类的项目管理工具。 几个常见的项目管理工具: 1、进度猫 进度猫是…

MySQL高级第十五篇:MVCC多版本并发控制原理剖析

MySQL高级第十五篇:MVCC多版本并发控制原理剖析 一、什么是MVCC?二、快照读与当前读?1. 快照读2. 当前读 三、MVCC实现原理(ReadView)1. 隐藏字段2. Read View3. 思路设计4. ReadView使用规则5. MVCC整体操作流程 四、…

响应式开发HTML5CSS3实现视频播放器的功能案例

目录 前言 一、本视频播放器需要实现的功能 ​二、代码分布结构 三、部分主要代码 1.index01.html 2.video1.css 3.video1.js 四、images图片资源及视频 五、运行效果 前言 1.本文讲解的响应式开发技术(HTML5CSS3Bootstrap)的HTML5视频播放器等…

随想录Day59--单调栈: 503.下一个更大元素II , 42. 接雨水

看到下一个更大,最先想到的就是单调栈。所以503.下一个更大元素II可以用单调栈的思路进行求解,其实这道题和496.下一个更大元素 I的思路是一样的,不过是多了一个首位相连的环状条件,这时候可以想到,把数组再复制遍历&a…

推荐系统|多目标建模|多目标优化|跨域多目标算法演进

目录 多目标建模总结 推荐系统——多目标优化 网易严选跨域多目标算法演进 背景介绍 多目标建模及优化 1.样本与特征 2. 模型结构迭代 3. 位置偏差与 Debias 4. 多目标 Loss 优化 5. 跨域多目标建模 多目标建模总结 http://t.csdn.cn/H514i 常见的指标有点击率CTR、…

电、气物联网联合管理监测方案

一、概述 水、电、气联合管理就是把同一个用户的用电计量和用水计量、用气计量统一到一个账户(同时具有子账户),用一套软件进行统一管理,当账户余额不足时,可实行停电催费,从而既达到预付费的目的&#xff…

hue源码编译,替换cloudera manage hue,解决hue滚动条bug问题

一.安装依赖 yum install python python-dev python-setuptools python-pip \ libkrb5-dev libxml2-dev libxslt-dev libssl-dev \ libsasl2-dev libsqlite3-dev libldap2-dev \ libffi-dev nodejs npm cmake make gcc g++ 二.拉取源码 wget https://github.com/cloudera/hue/a…

机器学习笔记之K近邻学习算法

机器学习笔记之K近邻学习算法 引言回顾:投票法回顾:明可夫斯基距离 K \mathcal K K近邻算法算法描述 K \mathcal K K值的选择小插曲:懒惰学习与急切学习 KD \text{KD} KD树描述及示例 K \mathcal K K近邻 VS \text{ VS } VS 贝叶斯最优分类器…

汽车基础软件信息安全与AUTOSAR

AUTOSAR 信息安全框架和关键技术分析 随着汽车网联化和智能化,汽车不再孤立,越来越多地融入到互联网中。在这同时,汽车也慢慢成为潜在的网络攻击目标,汽车的网络安全已成为汽车安全的基础,受到越来越多的关注和重视。AUTOSAR 作为目前全球范围普遍认可的汽车嵌入式软件架…

HDFS FileSystem 导致的内存泄露

目录 一、问题描述 二、问题定位和源码分析 一、问题描述 ftp程序读取windows本地文件写入HDFS,5天左右程序 重启一次,怀疑是为OOM挂掉,马上想着就分析 GC日志了。 ### 打印gc日志 /usr/java/jdk1.8.0_162/bin/java \-Xmx1024m -Xms512m …

Net2FTP搭建免费web文件管理器『打造个人网盘』

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 前言 文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人存储文件资料,还是商业文件流转&#xff0c…

老杨说运维 | 数智时代,运维一体化如何落地实践?

在IT运维的发展过程中,随着分布式架构的加速推进,云原生技术加入应用,运维工具相比过去呈现出了更高强度的进化态势,即从多个相对独立的软件向EA形态的一体化系统进化。本次樱花论坛正是基于这一新的变革点,邀请了行业…

(十二)rk3568 NPU 中部署自己训练的模型,(2)模型转换

对于rknn 模型部署,本人使用*.pt -> *.onnx -> *.rknn的方式。 一、首先是pt文件到onnx文件的转换。 onnx文件导出时,需要修改models/yolo.py文件中的后处理部分。 注意:在训练时不要修改yolo.py的这段代码,训练完成后使用export.py进行模型导出转换时一定要进行修…

RHCE第六次作业

目录 一、编写脚本for1.sh,使用for循环创建20账户,账户名前缀由用户从键盘输入,账户初始密码由用户输入,例如: test1、test2、test3、.....、 test10 1.创建脚本for1.sh 2.执行脚本并查看是否创建成功 二、编写脚本for2.sh,使用for循环,通过…

微积分:微分

目录 1.代数推导 2.几何推导 3.总结 1.代数推导 假设我们有一个正方形初始边长为X,这时面积S1x 然后正方形的边长增加△x,此时面积S2(x△x) 变化的面积大小是△s(x△x)- x2x△x(△x&#x…

软件测试外包干了4年,感觉废了..

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

c++算法——枚举法

枚举概念 枚举法是通过计算机速度快的特点,对问题所有可能性进行枚举,从中找到答案,需要利用循环。 例题 1,简单数字谜 题目描述 在□内填上一个合适的相同的数字,使等式“□365283□8256”成立。 输入格式 无 输出…

5.2 构造数值积分公式的基本方法与有关概念

学习目标: 如果要学习构造数值积分公式的基本方法与有关概念,可以遵循以下步骤: 1.了解数值积分的基本概念和性质:包括积分的定义、积分的性质、数值积分的定义及其误差等。这可以通过课本或相关的学习资料来了解。 2.掌握构造…

ubuntu 安装vmware tool(优先安装最新ubantu,可以不安装vmware tools)

1在虚拟机种站到安装vmware-tools 然后重启虚拟机 2在磁盘中可以看到如下文件,将zip文件移动到桌面解压备用 3关闭虚拟机 找到编辑虚拟机设置 4点击左侧 CD/dvd(SATA) 如果是使用镜像文件,改成使用物理驱动器. 5 打开命令行 cd 桌面 (如…