Unity-ML-Agents安装

这篇具有很好参考价值的文章主要介绍了Unity-ML-Agents安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.下载ML-Agents

 1.1 前往官网

 1.2 选择版本

 1.3 下载文件

2.下载Anaconda

3.虚拟环境

3.1 构建虚拟环境

3.2 创建项目,导入package.json

3.2.1 创建项目,导入package.json

3.2.2 导入成功

3.2.3 将模板项目拖入unity项目中

3.3 开始训练 

3.3.1 开始训练

3.3.2 选择场景

3.3.3 利用训练结果

 4. 安装cuda和cudnn

4.1 安装cudatoolkit 

4.2 安装cudnn 


1.下载ML-Agents

官网下载:https://github.com/Unity-Technologies/ml-agents

 1.1 前往官网

注意事项:请看官网的叙述,比如要求的unity的版本等。发行版19要求的unity最低是2020.3

Unity-ML-Agents安装

 1.2 选择版本

Unity-ML-Agents安装

 1.3 下载文件

Unity-ML-Agents安装

2.下载Anaconda

官网链接:https://www.anaconda.com/

3.虚拟环境

3.1 构建虚拟环境

(base) E:\>conda create -n ML_Agents python=3.8
(base) E:\>conda activate ML_Agents

(ML_Agents) E:\>pip install torch~=1.7.1   # 如果安装很慢的话,可以换镜像源

(ML_Agents) E:\>cd E:\ml-agents-release_19 # 切换到下载ml-agents的路径下,如果不在同一个磁盘,先切换磁盘

(ML_Agents) E:\ml-agents-release_19>pip install -e./ml-agents-envs
(ML_Agents) E:\ml-agents-release_19>pip install -e./ml-agents
Unity-ML-Agents安装
这种警告,错误,记得关代理

问:pip install torch~=1.7.1 中的~什么意思?

在Python中,波浪号(~)通常用于指定包的版本范围。在pip install命令中,~用于指定一个包的兼容版本范围,表示可以安装指定版本的包以及在该版本的最小和最大次要版本之间的所有修订版本。

例如,torch~=1.7.1表示可以安装1.7.1版本的torch包,以及在1.7.1版本的最小和最大次要版本之间的所有修订版本,例如1.7.2、1.7.3等,但不包括1.8.0及以上的版本。

这种方式可以确保包的更新不会破坏现有代码的兼容性,同时可以获取到包的修复和改进的更新版本。

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

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

Unity-ML-Agents安装

点击Open Model,打开相应的网络模型文件即可。

参考博客:https://blog.csdn.net/nan355655600/article/details/106245563

windows版本netron下载链接:https://gitcode.net/mirrors/lutzroeder/netron?utm_source=csdn_github_accelerator

3.2 创建项目,导入package.json

3.2.1 创建项目,导入package.json

Unity-ML-Agents安装

3.2.2 导入成功

Unity-ML-Agents安装

3.2.3 将模板项目拖入unity项目中

Unity-ML-Agents安装

解决报错

注意:原始的包里有PushBlockWithInput这个文件夹,我们要将其删除,因为我们没有导入inputSystemPackagee,所以会报缺失inputSystem的错。

注意:要在拖入后删除,这样不会影响本机文件的完整性。

Unity-ML-Agents安装

3.3 开始训练 

3.3.1 开始训练

(ML_Agents) E:\ml-agents-release_19>mlagents-learn config/ppo/PushBlock.yaml --run-id=push_block_test_02

重点:如果需要换成其他算法,只需将ppo换成poca、sac等即可,也可以修改配置文件里的一些参数,如神经网络的层数和节点数,以及其他超参数等。

配置文件路径在 E:\ml-agents-release_19\config\ppo\PushBlock.yaml

补充-利用可执行文件进行训练:

①官方文档:https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Learning-Environment-Executable.md

②具体实现方式:参考博客:https://blog.csdn.net/tianjuewudi/article/details/121115480​​​​​​​ 

配置文件内容-PushBlock.yaml

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
    network_settings:
      normalize: false
      hidden_units: 256
      num_layers: 2
      vis_encode_type: simple
    reward_signals:
      extrinsic:
        gamma: 0.99
        strength: 1.0
    keep_checkpoints: 5
    max_steps: 2000000
    time_horizon: 64
    summary_freq: 60000

这是一个ML-Agents配置文件的示例,以下是其中各个参数的详细的解释:

  • behaviors:行为列表,指定了每个行为的训练设置和网络架构。
  • PushBlock:行为名称。
  • trainer_type:训练器的类型,这里是PPO。
  • hyperparameters:超参数,包括以下几个:
    • batch_size:每个训练批次的大小。
    • buffer_size:经验缓存的大小。
    • learning_rate:学习率。
    • beta:熵正则化参数。
    • epsilon:控制策略更新步长的参数。
    • lambd:GAE参数。
    • num_epoch:PPO算法中的epoch数。
    • learning_rate_schedule:学习率调整策略,这里是线性调整。
  • network_settings:神经网络设置,包括以下几个:
    • normalize:是否对输入数据进行归一化处理。
    • hidden_units:每个隐藏层中神经元的数量。
    • num_layers:隐藏层数量。
    • vis_encode_type:可视化编码类型,这里是simple。
  • reward_signals:奖励信号设置,包括以下几个:
    • extrinsic:外部奖励信号,包括以下两个参数:
      • gamma:折扣率。
      • strength:奖励信号权重。
  • keep_checkpoints:保存检查点的数量。
  • max_steps:最大训练步数。
  • time_horizon:每个训练步长包含的最大时间步数。
  • summary_freq:训练日志的记录频率。

参数详情请见:https://blog.csdn.net/aaaccc444/article/details/130300451

解决报错1

这个错误提示显示您的 protobuf 版本过高导致了问题。建议您采取以下措施之一:

  1. 降低 protobuf 版本,使其小于等于 3.20.x
  2. 将环境变量 PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION 设置为 python。

第一种方法是安装一个旧版本的 protobuf。将protobuf包降级到3.20.x或更低版本,可以使用以下命令卸载当前版本的 protobuf,然后安装一个旧版本:

pip uninstall protobuf
pip install protobuf==3.19.6  # 之所以选择3.19.6这个版本,是结合了tensorboard版本后确定的。因为如果选择3.19.0版本会和tensorboard不兼容

第二种方法是将环境变量 PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION 设置为 python。这将使用纯 Python 解析,速度会慢一些,但可以解决问题。请注意,如果这个错误是由于你自己生成的代码导致的,则需要使用 protoc >= 3.19.0 重新生成代码。

在命令行中执行以下命令:

set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python

设置后,再次运行您的命令,应该就不会再遇到此错误了。

解决报错2

(ML_Agents) E:\ml-agents-release_19>mlagents-learn config/ppo/PushBlock.yaml --run-id=push_block_test_02
Traceback (most recent call last):
  File "D:\RuanJianAnZhunangWeiZhi\anaconda\anaconda3\envs\ML_Agents\Scripts\mlagents-learn-script.py", line 33, in <module>
    sys.exit(load_entry_point('mlagents', 'console_scripts', 'mlagents-learn')())
  File "D:\RuanJianAnZhunangWeiZhi\anaconda\anaconda3\envs\ML_Agents\Scripts\mlagents-learn-script.py", line 25, in importlib_load_entry_point
    return next(matches).load()
  File "D:\RuanJianAnZhunangWeiZhi\anaconda\anaconda3\envs\ML_Agents\lib\importlib\metadata.py", line 77, in load
    module = import_module(match.group('module'))
  File "D:\RuanJianAnZhunangWeiZhi\anaconda\anaconda3\envs\ML_Agents\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 843, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "e:\ml-agents-release_19\ml-agents\mlagents\trainers\learn.py", line 13, in <module>
    from mlagents.trainers.trainer_controller import TrainerController
  File "e:\ml-agents-release_19\ml-agents\mlagents\trainers\trainer_controller.py", line 13, in <module>
    from mlagents.trainers.env_manager import EnvManager, EnvironmentStep
  File "e:\ml-agents-release_19\ml-agents\mlagents\trainers\env_manager.py", line 12, in <module>
    from mlagents.trainers.policy import Policy
  File "e:\ml-agents-release_19\ml-agents\mlagents\trainers\policy\__init__.py", line 1, in <module>
    from mlagents.trainers.policy.policy import Policy  # noqa
  File "e:\ml-agents-release_19\ml-agents\mlagents\trainers\policy\policy.py", line 10, in <module>
    from mlagents.trainers.buffer import AgentBuffer
  File "e:\ml-agents-release_19\ml-agents\mlagents\trainers\buffer.py", line 97, in <module>
    class AgentBufferField(list):
  File "e:\ml-agents-release_19\ml-agents\mlagents\trainers\buffer.py", line 211, in AgentBufferField
    self, pad_value: np.float = 0, dtype: np.dtype = np.float32
  File "D:\RuanJianAnZhunangWeiZhi\anaconda\anaconda3\envs\ML_Agents\lib\site-packages\numpy\__init__.py", line 305, in __getattr__
    raise AttributeError(__former_attrs__[attr])
AttributeError: module 'numpy' has no attribute 'float'.
`np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
    https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

这个错误信息看起来是在使用 mlagents-learn 命令时出现的。根据错误信息显示的内容,问题可能出现在 NumPy 库版本的兼容性问题上。

具体来说,这里似乎出现了一个 AttributeError 异常,指出 numpy 模块中没有 float 属性。根据 NumPy 的文档,这个错误是因为 np.float 被废弃了,而正确的做法是直接使用 Python 内置的 float 类型。

要解决这个问题,一种方法是升级 NumPy 库到最新版本,然后修改相关代码,用 Python 的 float 类型替换所有使用了 np.float 的地方。另一种方法是降级 NumPy 到旧版本,例如 1.19.x 或更低版本,这个版本中仍然支持 np.float

因此,您可以尝试通过以下命令降级 NumPy 库到 1.19.x 或更低版本:

pip install numpy==1.19

请注意,这可能会影响其他依赖 NumPy 库的项目,因此请在升级或降级 NumPy 时格外小心,确保您的环境保持稳定。

3.3.2 选择场景

Unity-ML-Agents安装

因为之前训练过,会提示是继续训练还是覆盖训练

解决报错

(ML_Agents) E:\ml-agents-release_19>mlagents-learn config/ppo/PushBlock.yaml --run-id=push_block_test_02

            ┐  ╖
        ╓╖╬│╡  ││╬╖╖
    ╓╖╬│││││┘  ╬│││││╬╖
 ╖╬│││││╬╜        ╙╬│││││╖╖                               ╗╗╗
 ╬╬╬╬╖││╦╖        ╖╬││╗╣╣╣╬      ╟╣╣╬    ╟╣╣╣             ╜╜╜  ╟╣╣
 ╬╬╬╬╬╬╬╬╖│╬╖╖╓╬╪│╓╣╣╣╣╣╣╣╬      ╟╣╣╬    ╟╣╣╣ ╒╣╣╖╗╣╣╣╗   ╣╣╣ ╣╣╣╣╣╣ ╟╣╣╖   ╣╣╣
 ╬╬╬╬┐  ╙╬╬╬╬│╓╣╣╣╝╜  ╫╣╣╣╬      ╟╣╣╬    ╟╣╣╣ ╟╣╣╣╙ ╙╣╣╣  ╣╣╣ ╙╟╣╣╜╙  ╫╣╣  ╟╣╣
 ╬╬╬╬┐     ╙╬╬╣╣      ╫╣╣╣╬      ╟╣╣╬    ╟╣╣╣ ╟╣╣╬   ╣╣╣  ╣╣╣  ╟╣╣     ╣╣╣┌╣╣╜
 ╬╬╬╜       ╬╬╣╣      ╙╝╣╣╬      ╙╣╣╣╗╖╓╗╣╣╣╜ ╟╣╣╬   ╣╣╣  ╣╣╣  ╟╣╣╦╓    ╣╣╣╣╣
 ╙   ╓╦╖    ╬╬╣╣   ╓╗╗╖            ╙╝╣╣╣╣╝╜   ╘╝╝╜   ╝╝╝  ╝╝╝   ╙╣╣╣    ╟╣╣╣
   ╩╬╬╬╬╬╬╦╦╬╬╣╣╗╣╣╣╣╣╣╣╝                                             ╫╣╣╣╣
      ╙╬╬╬╬╬╬╬╣╣╣╣╣╣╝╜
          ╙╬╬╬╣╣╣╜
             ╙

 Version information:
  ml-agents: 0.28.0,
  ml-agents-envs: 0.28.0,
  Communicator API: 1.5.0,
  PyTorch: 1.7.1+cpu
Traceback (most recent call last):
  File "D:\RuanJianAnZhunangWeiZhi\anaconda\anaconda3\envs\ML_Agents\Scripts\mlagents-learn-script.py", line 33, in <module>
    sys.exit(load_entry_point('mlagents', 'console_scripts', 'mlagents-learn')())
  File "e:\ml-agents-release_19\ml-agents\mlagents\trainers\learn.py", line 260, in main
    run_cli(parse_command_line())
  File "e:\ml-agents-release_19\ml-agents\mlagents\trainers\learn.py", line 256, in run_cli
    run_training(run_seed, options, num_areas)
  File "e:\ml-agents-release_19\ml-agents\mlagents\trainers\learn.py", line 71, in run_training
    validate_existing_directories(
  File "e:\ml-agents-release_19\ml-agents\mlagents\trainers\directory_utils.py", line 25, in validate_existing_directories
    raise UnityTrainerException(
mlagents.trainers.exception.UnityTrainerException: Previous data from this run ID was found. Either specify a new run ID, use --resume to resume this run, or use the --force parameter to overwrite existing data.

这段错误信息提示你的ML-Agents训练过程出现了问题。具体来说,这个错误信息说先前这个run ID的训练数据已经存在,你需要指定一个新的run ID,使用--resume来恢复这个run ID的训练,或者使用--force参数来覆盖已有的数据。

正确训练开始

Unity-ML-Agents安装

 这是训练262415和16269的结果(注意查找路径),正常是训练2000000步停止训练。

利用ctrl+c终止训练,利用代码:(ML_Agents) E:\ml-agents-release_19>mlagents-learn config/ppo/PushBlock.yaml --run-id=push_block_test_02 --resume 继续训练

Unity-ML-Agents安装

 这是继续训练后:382252步的结果Unity-ML-Agents安装

3.3.3 利用训练结果

其他场景先禁用,方便将训练结果拖入Area,不然得重复操作32次

Unity-ML-Agents安装

 新建一个NN文件夹,把382252步的结果拖入Unity-ML-Agents安装

 原先的是自带的网络,更换成我们自己的网络。

Unity-ML-Agents安装

 利用训练结果直接完成任务

Unity-ML-Agents安装

 4. 安装cuda和cudnn

在训练的同时,可以新打开一个命令行窗口,激活环境,安装cuda和cudnn

4.1 安装cudatoolkit 

(mlagents) C:\Users\HASEE>conda search cuda

(mlagents) C:\Users\HASEE>conda install cudatoolkit=10.1.243

Unity-ML-Agents安装

4.2 安装cudnn 

(mlagents) C:\Users\HASEE>conda search cudnn

(mlagents) C:\Users\HASEE>conda install cudnn==7.6.5

Unity-ML-Agents安装

具体的cudatoolkit 与cudnn的版本对应情况暂时没找到之前一篇写的比较好的博客,请等待后续补充。文章来源地址https://www.toymoban.com/news/detail-497694.html

到了这里,关于Unity-ML-Agents安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ML-Agents与自己的强化学习算法通讯——PPO篇

    在上一篇文章ML-Agents与python的Low Level API通信中,我简要介绍了Python与Unity端的ML-Agents插件的通讯代码,如何正确运行一个能够进行强化学习训练的Unity环境,并获取到响应的信息,接下来将介绍如何利用自己的强化学习算法进行训练。 这里我利用了强化学习库PARL来训练ML-Ag

    2023年04月18日
    浏览(48)
  • Unity-ML-Agents-Food Collector环境-FoodCollectorSettings.cs

    Recording Statistics:https://github.com/Unity-Technologies/ml-agents/blob/release_19/docs/Learning-Environment-Design.md#recording-statistics 环境链接:https://github.com/Unity-Technologies/ml-agents/tree/release_19/Project/Assets/ML-Agents/Examples/FoodCollector 官方链接:https://github.com/Unity-Technologies/ml-agents/blob/release_19/Project/As

    2024年02月06日
    浏览(39)
  • 修改npm全局安装的插件(下载目录指向)

    我们先打开终端 然后执行 查看npm 的下载地址 一般都会在C盘 但是 我们都知道 C盘下东西多了是很不好的 所以 我们可以执行 将 npm 的下载地址 改变成 E盘下的 npmfile目录 这样 以后 默认全局安装的插件就会都到这个地址下了 执行完之后 我们再次执行 查看到的就是我们刚才设

    2024年02月07日
    浏览(60)
  • Nginx下载和安装教程、Nginx目录结构、Nginx具体应用

    Nginx是一款轻量级的开源Web服务器软件,也是一种反向代理服务器。它以其高性能和灵活性而被广泛应用于互联网领域。本文将介绍Nginx的概述、下载和安装以及目录结构。 (1)Nginx介绍 Nginx最初由Igor Sysoev开发,目的是解决C10K问题,即同时处理成千上万个并发连接的需求。

    2024年02月15日
    浏览(54)
  • Docker介绍下载安装、制作镜像及容器、做目录映射、做端口映射

    在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是

    2023年04月12日
    浏览(55)
  • Android Studio安装和设置SDK、Gradle(国内源)、AVD下载目录详细教程

    本机环境:win11家庭版 Android Studio版本:android-s tudio-2022.2.1.20-windows android studio官网 在安装目标盘创建文件夹,不要有中文文件夹,文件夹名称不要带空格。 本次安装在VMware虚拟机中安装,只有一个C盘,无其他盘,所以自定义安装目录都在C盘下创建的 Android studio安装完成 上

    2024年02月14日
    浏览(52)
  • Unity Perception合成数据生成、标注与ML模型训练

    在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D场景编辑器 任何训练过机器学习模型的人都会告诉你,模型是从数据得到的,一般来说,更多的数据和标签会带来更好的性能。 收集数据,尤其是标记数据非常耗时,因此成

    2024年02月06日
    浏览(46)
  • Unity的ML-agent训练教程(附环境配置流程)

    1)创建虚拟环境 下载好anaconda后打开anaconda prompt,新建虚拟环境,命名为Unity,通过以下指令: 接下来提过指令 激活虚拟环境Unity 2)在虚拟环境内配置需要用的库 在GitHub上下载unity官方的ml-agent包仓库,下载到位置 在anaconda prompt通过依次输入指令导入库文件 一般会因为网速

    2024年02月20日
    浏览(35)
  • Unity下载、安装、汉化

    官网地址:Unity中国官网 下载前需要在官网注册一个账号 Unity和Unity Hub是配套使用的,Unity是编辑器,Unity Hub类似于管理Unity的工具,可以在Unity Hub里面激活Unity。 两个文件下载下来都是.exe的可执行文件,直接双击安装即可。 建议先汉化再使用,陌生单词太多了脑子一时翻译

    2024年02月10日
    浏览(45)
  • unity的下载和安装

    我做了一个不知道算不算好的决定,其实还是很难过的。但过去的事就让他过去吧,现在开始学习一些其他的东西吧,比如说unity吧。 Unity的国内下载网址:https://unity.cn/ 进入官网后,选择想要的版本 点击下载“从Hub下载”,下载unity Hub进行下载 选择好需要安装的文件位置,

    2024年02月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包