Unity中训练一个ML-Agents项目—解决torch和mlagents配置问题
开始一个全新的Unity机器学习项目-ML-Agents
- 目录
- 一、安装Anaconda并新建一个环境
- 二、配置torch和mlagents
- 1. 进入虚拟环境(我的环境命名为ml-agents)
- 2. pip install torch
- 3. pip install mlagents
- 三、最激动人心的——在Unity里动起来
- 1. Unity 场景搭建
- 2. 配置文件.yaml
- 3. 执行训练文件
- 四、最终的结果
- 1. 训练结果的输出
- 2. 训练结果的使用
- 写在最后
目录
基于Unity的ML-Agents 从零开始构建一个可以成功运行的项目。重点罗列出torch和mlagents配置中可能存在的问题。
一、安装Anaconda并新建一个环境
这部分内容基本没有什么太大的问题,建议参考以下几个链接就能顺利完成。
- 一个我之前的工作 Anaconda下载安装
- Anaconda的环境变量配置+新建环境
- 相似的Anaconda配置工作
- 相似的再来一个(就不信不能解决你的问题)
二、配置torch和mlagents
1. 进入虚拟环境(我的环境命名为ml-agents)
① 打开 Anaconda Prompt
② 激活虚拟环境,输入conda activate XXXX(虚拟环境名称)
2. pip install torch
① 首先,明确自己的虚拟环境下安装的python版本(我的是==3.7)。
输入python -V
查询
② 两种方法安装:
pip3 install torch~=1.7.1 -f https://download.pytorch.org/whl/torch_stable.html
但是,我自己在尝试的时候,通常会超时,而且还会出现下载为GPU版本的情况。所以我更推荐第二种下载方式。- 我们在这个手动下载网页链接下找到符合自己python对应的CPU版本的torch,下载到本地进行安装。
大家可以参考我现在的版本。
③ 在上述第二种方法下,我们吧这个.whl后缀的文件现在至本地,找到它的绝对路径(我的路径在D:\Donwloads\
)。等待完成即可。
3. pip install mlagents
这部分基本没什么问题,输入
pip install mlagents -i https://pypi.douban.com/simple
慢的话后面加上清华镜像就可以了。测试一下是否成功安装mlagents,输入
mlagents-learn --help
A. 正常显示情况。
B.
protobuf
版本太高——那就uninstall后重新下一个低版本的
—B.1 报错如下:
—B.2 解决如下,输入pip install protobuf==3.19.0 -i https://pypi.douban.com/simple
基本上我遇到的问题就是这个,再一个就是提示GPU版本错误,关于这个问题只要你在第二个步骤是下载CPU版本的torch
就没有问题了。
三、最激动人心的——在Unity里动起来
1. Unity 场景搭建
可完全参照这篇文章操作搭建环境
但是 代码中还是有一些问题需要注意。
- 在
OnActionReceived()
函数中,使用浮点型数组会报错,所以还是在函数中声明变量类型为ActionBuffers
变量名为vectorAction
在调用的时候使用vectorAction.ContinuousActions[0]
修改动作。
原本
修改 - 在重写
Heuristic()
方法时也一样。
原本
修改
至此,代码部分没有任何问题。训练时记得把脚本中的Behavior Type 修改回Default
2. 配置文件.yaml
这里也可以参考训练网络-配置文件
这个压缩包是Unity官方给出ML-Agents
文件名为 rollingball_config.yaml
文件位置 D:\Downloads\ml-agents-main\ml-agents-main\config\ppo\
3. 执行训练文件
- 我们从Anaconda Prompt中激活新建的虚拟环境(同第1步骤);
- 进入压缩包所在位置 即
D:\Downloads\ml-agents-main\ml-agents-main\config\ppo\
; - 输入
mlagents-learn ./rollingball_config.yaml --run-id rollingball
其中 id 后的名称为训练后结果存放的位置; - 不出意外会报错 ;
- 不着急我们更新一下就好了 参考;
① 执行指令获得帮助python -m mlagents.trainers.upgrade_config -h
② 执行python -m mlagents.trainers.upgrade_config rollingball_config.yaml rollingball_config.yaml
③ 再执行一次即能看到令人激动的UNITY了!mlagents-learn ./rollingball_config.yaml --run-id=RollingBall --force
,其中force表示强制覆盖原有文件
如果出现以上图片,恭喜你配置成功了,而且只需要在Unity中点击运行即可开始训练了!!!!
四、最终的结果
1. 训练结果的输出
我们在第三步骤-3.执行训练文件-③中输入mlagents-learn ./rollingball_config.yaml --run-id=RollingBall --force
,所以训练结果就在这里。
2. 训练结果的使用
我们只需要把这个训练好的.onnx文件拖进Unity,然后给到Behaviors parameters——Model
就可以直接看到训练后的效果。
写在最后
最近忙完了手头的工作,开始在Unity下试试看机器学习,看看能有什么新突破和发现吧。六月的阴雨,带走离别,迎来酷暑。继续向前冲吧,谁说站在光亮里的才算英雄呢~
Unity中训练一个ML-Agents项目—解决torch和mlagents配置问题相关推荐
- 学习用C#在Unity中创建一个2D Metroidvania游戏
学习用C#在Unity中创建一个2D Metroidvania游戏 你会学到: 构建2D Unity游戏 用C#编程 玩家统计,水平提升,米尔和远程攻击 敌方人工智能系统 制定级别和级别选择 Lear ...
- 学会在Unity中创建一个Match-3益智游戏 Learn To Create a Match-3 Puzzle Game in Unity
MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:48场讲座(6h 38m) |大小解压后:2.8 G ...
- Unity:图片的一个像素单位对应Unity中的一个距离单位
当我们使用unity开发时2D项目时,如果需求是一个像素单位就要对应unity中的一个距离单位, 也就是:图片的1像素 = unity中的1个距离单位. 在该图片的属性面板中可以看到有个属性是:Pix ...
- 学习在Unity中创建一个动作RPG游戏
游戏开发变得简单.使用Unity学习C#并创建您自己的动作角色扮演游戏! 你会学到什么 学习C#,一种现代通用的编程语言. 了解Unity中2D发展的能力. 发展强大的和可移植的解决问题的技能. 了解 ...
- Visual Stdio 无法直接启动带有“类库输出类型”的项目若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项目!
Visual Stdio 无法直接启动带有"类库输出类型"的项目若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目.将这个可执行项目设置为启动项目! 参考文章: (1) ...
- Unity中获取一个物体下所有的子物体的方法
Unity中获取一个物体下所有的子物体的方法 方法1(获取全部子物体,无论子物体SetActive是否为true): using System.Collections; using System.Co ...
- Eclipse导入Maven项目解决Build Path不能配置问题
Eclipse导入Maven项目解决Build Path不能配置问题 参考文章: (1)Eclipse导入Maven项目解决Build Path不能配置问题 (2)https://www.cnblog ...
- unity 2020 怎么写shader使其接受光照?_如何在Unity中造一个PBR Shader轮子
之前有业界大佬建议我去了解下Unity的PBR.说来惭愧,我查找了下资料才发现自己在这方面的知识居然是一片空白.经过几周的学习与尝试我对这一块算是有了初步的了解,于是写了这篇文章,一方面对自己学到的东 ...
- 如何在 Unity 中制作一个道具系统
原文:How to make a Power-Up System in Unity 作者:Kevin Small 译者:kmyhy 如果音速小子中没有金色戒指和电动鞋,超级马里奥中没有了蘑菇,或者吃豆 ...
最新文章
- ssm插入数据时候栈溢出_大话数据结构笔记(4)
- 关于simplemodal的动态加载
- C中结构体的存储分配
- .Net Core 三大Redis客户端对比和使用心得
- “温室里的花朵”也要直面困难
- Android elevation的使用阴影
- 又到开学季 学习神器走一波 物联网开发板
- html风格的滚动条
- 找到没使用过的ip地址
- 基于内外环PD控制的四旋翼飞行器控制系统simulink仿真
- R语言随机抽样及分层抽样
- Cocos2d-x制作《单机斗地主》源码解剖1:创建一副扑克牌
- 怎么把epub转换成txt文本
- sql server 2008服务无法启动的原因和解决办法
- Java读取文件夹下的文件并进行处理
- docker-compose 部署shipyard
- 转置卷积中的棋盘效应
- 亚马逊账号关联:一生只能有一个店铺
- 网站规划通识:原型图绘制的一些注意事项
- 「数据游戏」:使用 ARIMA 算法预测三日后招商银行收盘价