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

news/2024/5/20 12:31:21/文章来源:https://blog.csdn.net/aaaccc444/article/details/130302452

前言

训练结果文件路径: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.luyixian.cn/news_show_290378.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

认识网络随机丢包

考虑一根漏水的管子,希望出水口接到和不漏的管子等量的水,要么靠时间,反复将漏掉的水重新注入,直到漏掉的水可忽略: ​ 要么靠空间,在漏的地方将管子加粗,一次性注入更多的水: 不…

如何在云服务器/云主机上部署最新版本的Hadoop3.3.5(Ubuntu20.0.4)

在云服务器上部署Hadoop 步骤1:更新系统 sudo apt-get update sudo apt-get upgrade步骤2:安装Java Hadoop需要Java运行环境。首先,安装OpenJDK 8: sudo apt-get install openjdk-8-jdk检查Java版本: java -versi…

掌握Linux指令和权限:一个入门教程

目录 一.Linux基本指令1.ls指令2.pwd指令3.cd指令4.touch指令5.mkair指令6.rmdir和rm指令 一.Linux基本指令 1.ls指令 语法格式:ls [选项][目录或者文件] 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其…

EtherCAT和Ethernet的不同点有哪些, 通信周期又是什么意思?

小伙伴们,我们又来了。上期大概介绍了EtherCAT的一些特性,本期我们将会更详细的介绍一下EtherCAT的实现方式,通信周期的意义到底是什么、SDO和PDO到底是什么等概念。 首先要声明,尽管本期介绍略微深入,实际上小伙伴使…

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

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

AIPRM for ChatGPT插件让ChatGPT如虎添翼

ChatGPT大热,家人们都申请到了账号,可是总是在一问一答的基础上来完成基本的应用,而不能很好的使用「咒语」(Prompt),收获的答案不是通过很多次的反复问获取答案,就是获取的不是想要的答案。所以…

【HCIP】Huawei设备下IPV4IPV6共存实验

目录 方法一、普通的GRE将V6基于V4通讯 方法二、6to4的tunnel 方法三、双栈 方法一、普通的GRE将V6基于V4通讯 //方法一和方法二的前提,搭个简单的V4网络就行 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip address 12.1.1.1 24 [r1]router id 1.1.1.1 [r1-Gigabi…

分布式数据一致性解决方案推理过程

redis是一个极轻量级的进程,单机单线程单进程。 使用redis很容易实现分布式锁:setnx,同一个key,谁设置成功了,谁就抢到了锁,所以就产生了多锁问题。 假设客户端1抢到了锁,redis挂了&#xff0c…

不懂就问,Milvus 新上线的资源组功能到底怎么样?

在近期更新的 Milvus 2.x 版本中,我们上线了在社区中呼声一直很高的【资源组功能】。有了这个功能,用户再也不需要“为每个 collection 部署一套 Milvus 服务”的方案,轻松实现对 Query Node 资源进行分组管理,达到物理资源隔离的…

运行时内存数据区之执行引擎(一)

执行引擎概述 执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软…

「计算机控制系统」6. 直接设计法

特殊类型系统的最小拍无差设计 一般系统的最小拍无差设计 最小拍控制器的工程化改进 Dahlin算法 文章目录 特殊类型系统的最小拍无差设计理论分析典型输入函数的最小拍无差系统 一般系统的最小拍无差设计有波纹最小拍无差设计无波纹最小拍无差设计 最小拍控制器的工程化改进针对…

浅析商场智能导购系统功能与实施效益

商场智能导购系统是一种基于物联网技术和人工智能算法的解决方案,旨在提供商场内部的智能导购服务,为消费者提供个性化的购物导引和推荐,提升用户购物体验,增加商场的客流量和销售额。 商场智能导购系统的方案一般包括以下主要功能…

LeetCode 27.移除元素

文章目录 💡题目分析💡解题思路🚩思路1:暴力求解 --- 遍历🔔接口源码:🚩思路2:空间换时间🔔接口源码:🚩思路3:双指针(快慢指针)🔔接口…

tftp+Filezilla文件双向传输(1)-centos(VMware)-win10(host)

目录 1.下载安装vsftpdtftptftp-server 2.配置服务 2.1 配置服务 修改文件 /etc/vsftpd.conf 2.2 配置服务 守护进程 /etc/xinetd.d/tftp 2.3 配置服务 tftp服务器 2.4 配置登录用户 2.4.1 修改selinux 2.4.2 匿名用户登录 2.4.3 新建账户,不能登陆系…

Linux时间服务器(ntp)

1.配置ntp时间服务器,确保客户端主机能和服务主机同步时间 2.配置ssh免密登陆,能够通过客户端主机通过redhat用户和服务端主机基于公钥验证方式进行远程连接 一.配置ntp时间服务器,确保客户端主机能和服务主机同步时间 1、软件安装 [rootl…

Liunx下进程间通信

文章目录 前言1.进程间通信相关介绍2.管道1.匿名管道2.管道的原理3.通过代码来演示匿名管道4.命名管道5.命名管道的原理6.命名管道代码演示 3.System V共享内存1.共享内存原理2.相关系统接口的介绍与共享内存的代码演示3.共享内存的一些特性 4.system V消息队列与system V信号量…

TryHackMe-Services(Windows域渗透)

Services 认识团队! 今天thm新出的房间,尝尝鲜 端口扫描 循例nmap 把services.local加入hosts Web枚举 发现员工邮箱以及一些员工姓名 从下边的邮箱中,大致可以猜测其他员工账户名跟这个一致的格式 将其保存起来 立足 - AS-REP Roasting…

Linux基础—日志分析

Linux基础—日志分析 一、日志的功能1.日志消息的级别2.设备字段说明 二、日志文件的分类1.内核及系统日志2.用户日志3.程序日志 三、日志文件1.日志文件查看2.主要日志文件介绍3.日志管理策略 一、日志的功能 用于记录系统、程序运行中发生的各种事件 通过阅读日志&#xff0c…

2023第十四届蓝桥杯 C/C++大学生A组省赛 满分题解

写在前面 以下代码,目前均可通过民间OJ数据(dotcpp & New Online Judge), 两个OJ题目互补,能构成全集,可以到对应链接下搜题提交(感谢OJ对题目的支持) 如果发现任何问题&…

论文各子结构的实现

本文将简明介绍人工智能论文各子结构的实现方法,重点指出了各部分实现时的要点,帮助读者高效地完成论文的写作。 1. 标题 论文标题的确定必须遵循明确而有吸引力的原则。论文的题目需要准确反映自己论文的研究内容和创新点,同时还必须具有吸…