Unity3D ML-Agent-0.8.1 学习四(模仿学习)

Unity3D ML-Agent-0.8.1 学习四(模仿学习)Unity3DMl-Agent-0.8.1学习四(模仿学习)写的目的场景设置修改配置并训练总结写的目的本篇介绍模仿学习,即玩家边玩,代理边学习,主要分为在线学习和离线学习,在线就是跟着师傅一起学,离线就是看是师傅录制的资料学习,我们主要讲在线学习,就是玩家边玩,AI边学习,可以实时观察学习的效果,离线学习只是记录玩家信息,产生生成一个文件,命令行学习文件即可,不多做介绍。场景设置可以…


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Unity3D ML-Agent-0.8.1 学习四(模仿学习)

写的目的

本篇介绍模仿学习,即玩家边玩,代理边学习,主要分为在线学习和离线学习,在线就是跟着师傅一起学,离线就是看是师傅录制的资料学习,我们主要讲在线学习,就是玩家边玩,AI边学习,可以实时观察学习的效果,离线学习只是记录玩家信息,产生生成一个文件,命令行学习文件即可,不多做介绍。
在这里插入图片描述

场景设置

可以复制前面的多代理学习的场景,预制TrainingArea复制2份,分别命名为StudentTrainingArea,TeacherTrainingArea,因为我们需要有是老师带学生学习,所以需要2个预制,当然其实只需要StudentTrainingArea,因为可以多个学生一起跟一个老师学习。
在这里插入图片描述

创建1个大脑,即学生模仿学习的大脑,命名为StudentRollerBallILBrain,属性还是跟单代理一样。
在这里插入图片描述
然后将StudentTrainingArea里的RollerAgent上的大脑换成StudentRollerBallILBrain
在这里插入图片描述
将TeacherTrainingArea里的RollerAgent上的大脑换成RollerBallPlayerBrain,即我们最开始人为操作的大脑,因为需要跟着玩家学,所以得需要人为操作。
在这里插入图片描述
再将Academy里的广播大脑设置成刚才那两个,即他们之间可以通信了,学生可以学习老师的行为了。记得训练前Control打勾。
在这里插入图片描述
设置完成后,如果要多代理训练,可以复制多个学生预制,感觉像做广播操一样
在这里插入图片描述

修改配置并训练

场景设置完了之后,找到online_bc_config.yaml文件:
在这里插入图片描述
然后添加StudentRollerBallILBrain设置,可以参考我这个

StudentRollerBallILBrain: 对应大脑的名字
    trainer: online_bc
    max_steps: 2000  
    summary_freq: 100
    brain_to_imitate: RollerBallPlayerBrain 对应老师的名字,即要模仿的对象
    batch_size: 32
    batches_per_epoch: 5
    num_layers: 4
    hidden_units: 64
    use_recurrent: false
    sequence_length: 16

最后命令行进行训练:

mlagents-learn config/online_bc_config.yaml --run-id=RollerBall-IL --train --slow     --slow 代表正常速度,方便操作

在这里插入图片描述
可以看到效果也不错,当然取决于你的操作啦。训练完之后就是把相应的大脑换上即可看效果。

总结

模仿学习其实也不错,用于比较复杂的情况,可以先带着AI训练训练,不然AI真的摸不着头脑,瞎逛了。

例子主要文件unity3D-ml-agent-0.8.1

好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵,部分图片来自网络,侵删。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192926.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DropdownList绑定年份并且默认值显示当年年份

    DropdownList绑定年份并且默认值显示当年年份int year = DateTime.Now.Year;// 取当前时间年                ListItem yearItem = null;//向过去的年份循环100年for (int i = year; i{   yearItem = new ListItem(i.ToString(), i.ToString());   d

    2022年10月8日
  • php安装

    php安装

    2021年6月17日
  • 《前端运维》二、Nginx–1基本概念及安装

    一、Nginx基本概念简单来说,Nginx就是一个代理服务器,什么是代理服务器呢?也就是当我们访问服务器的时候,请求不会直接请求到服务器,中间会有个代理,代理会预先于服务器处理这些请求,最后由代理决

    2022年3月25日
  • centos7如何更改ip地址

    1.进入网络设置文件里面命令如下:这里最好是使用root用户,然后使用ls命令找到网络的配置文件。我这里的配置文件是ifcfg-ens33.然后使用vi命令进入文件进行编辑网络的ip地址等信息。然后按键盘i进入编辑模式,更改ip地址等信息。然后按esc键退出编辑模式,然后输入:wq!保存。2.使用servicenetworkrestart命令,重启网络服务。3.ping百…

    2022年4月7日
  • NeatUpload的安装使用

    NeatUpload的安装使用版本:NeatUpload-1.2.32,用于文件上传。可传大文件。1.在VS工具箱中点右键选“选择项”……将Brettle.Web.NeatUpload.dll添加到工具箱。可以在添加后的工具箱看到

    2022年7月2日
  • 2019最新PHP模拟面试题及答案「建议收藏」

    2019最新PHP模拟面试题及答案「建议收藏」PHP模拟面试题汇总如下:1.如何防止form表单重复提交?2.Cookie被禁用了session还可以使用吗?3.你了解的或者用过的版本控制工具有哪些?简单说明一下。CVS,SVN,vss,git4.单例模式的优点,如何实现?5.单引号和双引号的区别是什么?(1)双引号可以解析变量,单引号不能解析变量(2)双引号和单引号可以互相嵌套(3)双引号当中的变量可以使用特殊字符分隔…

    2022年8月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号