玩转Unity中的ML-Agents 机器学习(三):BallacceBall 案例训练

转载注明出处,QQ群:142617170 , 欢迎进群交流!

运行Unity 的ML-Agents所需要的环境都搭好之后,就可以实际探索工程内的官方案例。这一篇我们以官方工程内的3D BallanceBall 案例来说明整个机器学习的流程以及在这个过程中博主所遇到的一些问题。

随着新的ML-Agents v0.3的发布,我更改了教程中的一下过时的内容。

源英文文档的教程地址:https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Getting-Started-with-Balance-Ball.md

最开始看到这个工程,有很多点和设置也许我们不是很清楚,看不懂,但是没关系,后面我们慢慢了解。这一篇主要是介绍整个流程,按照这个流程走可以训练我们所设置的AI。流程如下:

 一。Unity编辑器设置:

1.用unity2017.1 或以上的版本打开从github上下载的ML-Agents工程。并找到Assets/ML-Agents/Examples/3DBall/,打开scene文件。
2.选择Edit--->Project Settings ---> Player,  将Resolution and Presentation ---> Run in Background 勾上,并将Display Resolution Dialog 设置成Disabled.并在Othersetting中,将 Scripting Runtime Version 设置成 Experimental (.NET 4.6 Equivalent) ,并在 Scripting Defined Symbols 中加入 ENABLE_TENSORFLOW 。 保存项目。

3.在场景中选中游戏物体 Ball3DBrain   (Ball3DAcademy的子物体),在Inspector界面里确保它的 “Type of Brain” 属性设置成 External.

4.按Ctrl + Shift + B  或者 选中 File ---> Build Settings,选择你要导出的平台(一般是PC平台),然后选中Development Build 选项(非必须)。

5.点击Build按钮。然后把导出的exe文件目录设置到python目录下。细心的你会发现,你从github上下载的工程中,根目录下有一个python文件夹,我们就是要把.exe文件导出到那个python文件夹下。然后点击保存,导出 .exe文件。(博主用的是windows,所以导出的是。exe文件,MAC平台我没试过,所以这里请您自己尝试)

二。在Python环境下进行机器学习,训练AI:

1.进入Anaconda命令行,并输入: jupyter notebook  , 它会在你的浏览器里打开一个新的网页。

2.更改jupyter notebook 的默认根目录,把启动目录设置为我们刚才用到的那个python 文件夹下.具体更改的方法我就不细说了,见下面的网址:
https://www.zhihu.com/question/31600197

3.重新进入jupyter notebook, 此时我们在浏览器将会看到python文件夹下的目录内容,打开 Basics.ipynb , 请确认你打开的文件后缀是.ipynb,而不是.py . 然后将文件内的 env_name的值设置成我们导出的.exe文件的名字。比如你导出的.exe 文件名字叫做 maomao.exe , 那么就把env_name 的值设置成 maomao 。保存文件。

4.点击最上面的工具栏Cell 菜单,选择Run All 选项,然后python就运行起来了。机器就开始运行我们导出的.exe程序,并开始训练。后面会有一系列的输出。(已过时)

5.输出的内容会有“ Mean Reward : 一些数字” 这些内容,说明机器正在训练。当出现 Save Model 时,表示保存了一些训练数据。此时我们可以选择关闭打开的.exe程序,此时训练也会暂停;也可以继续等待,让训练继续。(已过时)

6. 将训练结果保存成Unity 可以识别的二进制文件。鼠标左键“Export the trained TensorFlow graph” 下面的那一行代码,并选中Cell --->Run Cells,运行结束之后就生成了一个二进制文件。这个文件放在 python/models/ 下面。文件名就是.exe文件的名字(已过时)
4.打开Anaconda命令行,即Anaconda Prompt.输入指令:Activate ml-agents


5.定位到我们从github上下载的文件所在的盘符。比如说我根目录在E:\ML\ml-agents-master 下,那么我就输入以下命令:

    E:   --------->    cd E:\ML\ml-agents-master


6.输入命令:   

扫描二维码关注公众号,回复: 3063595 查看本文章
python python/learn.py python/maomao.exe --train 
如果环境都装对了的话,就可以正常开始训练了。注意,命令中打黑体的 “maomao”是根据你从unity导出的.exe文件来定的,如果你导出的.exe文件名为 Ball3D.exe , 那么这里,你应该把命令中的maomao.exe 替换成 Ball3D.exe


7.一切正常的话,就等着它开始训练。训练结束后,会自动在项目 根目录产生一个models文件夹,训练后的二进制文件是:

\models\PPO\maomao_ppo.bytes  .(本例的文件)

8.将训练的二进制文件放入Unity中,本案例,我们放到unity-environment/Assets/ML-Agents/Examples/3DBall/TFModels/ 下 。

三。将训练结果导入Unity,查看结果

  1.确保Unity中已经安装了TFSharpPlugin 插件。(之前的博客中有说)

  2.在场景中选中游戏物体 Ball3DBrain,把Type of Brain 属性设置成Internal.

  3.把我们保存的二进制文件拖进Graph Model栏中。

  4.设置Graph Placeholder 的size 为 1, 并把Name 设置为epsilon, Value Type 设置为floating point .max value 和 min value 都设置成0

  5.点击 Play 按钮,观看训练结果。大功告成。


到这里整个机器学习的流程就结束了,也许中间会碰到许多问题。碰到问题了可以到QQ群:142617170  中交流。
 
 


猜你喜欢

转载自blog.csdn.net/q568360447/article/details/78206968
今日推荐