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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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

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

写的目的

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

场景设置

可以复制前面的多代理学习的场景,预制TrainingArea复制2份,分别命名为StudentTrainingAreaTeacherTrainingArea,因为我们需要有是老师带学生学习,所以需要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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 查看端口占用的进程_cmd查看端口占用

    查看端口占用的进程_cmd查看端口占用在开发中经常会遇到端口占用问题,例如下面,npmstart报的错误:1.查看端口占用情况命令lsof-itcp:8080输出结果:字段说明:字段名说明COMMAND进程名称PID进程标识符USER进程所有者FD文件描述符,应用程序通过文件描述符识别该文件TYPE文件类型,文件REG、目录DIR、字符CHR、块设备…

    2022年7月27日
    3
  • sql中declare的用法_sql局部变量

    sql中declare的用法_sql局部变量换工作了,以后主要和SqlServer打交道了,仿佛回到了大学,不知道学校的饭还是那么好吃又便宜吗?北京的饭好贵;不知道门口哪家板面的生意是不是还是那么红火,好想再去吃一碗。。。咳咳,不多说了,直接进入主题declare这个类型,其实可以理解为Java里面的public类型变量,全局有效,当然非要较真的话,我觉得归到protected类也可以(不理解的话不要看后半段,只是为了严谨)Java修饰符 public:对所有类可见。使用对象:类、接口、变量、方法 protect..

    2022年8月20日
    8
  • 6种不同画法画平行线_「精品」漫画人物轮廓画法(精华版)「建议收藏」

    「教程」漫画人物脸部绘画基础part01脸部轮廓的画法(精修版)一、漫画线条与变形想要将人的脸或表情用自己的风格表现出来,需要抓住其特征,然后进行简单化、夸张化的变形,这是不可或缺的手段。在实际开始动笔画之前,关于如何变形要好好考虑清楚。01.简化主线用少量的线条画出角色的特征难度很高。刚开始练习的可以参考照片,拿真人的脸做练习,然后再逐步减少主线的线条,将画面简单化。①细碎的发丝归拢为…

    2022年4月5日
    239
  • java中page的对象,page对象[通俗易懂]

    java中page的对象,page对象[通俗易懂]page对象是JSP九大内置对象之一。JSP全称JavaServerPage,是一种动态网页技术标准,以Java语言作为脚本语言。在JSP中预先定义了九个内置对象,这个九个内置对象不需要声明就可以在脚本代码和表达式中任意使用,九个内置对象分别是:request、response、session、application、out、pageContext、config、page、exception。pa…

    2022年7月27日
    12
  • 一个例子让你了解Java反射机制

    一个例子让你了解Java反射机制本文来自:blog.csdn.net/ljphhjJAVA反射机制:通俗地说,反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作,希望读者能理解,也就是说,类,类的成员,我们在运行的时候还可以动态地去操作他们.理论的东东太多也没用,下面我们看看实践Demo~Demo:packagecn.lee.demo;import…

    2022年7月7日
    22
  • shell IF语句的使用[通俗易懂]

    shell IF语句的使用[通俗易懂]目录条件语句(ifelse)的简单介绍if…fi语句if…else…fi语句if…elif…[else…]fi语句条件语句(ifelse)的简单介绍    如果你在用shell完成一些逻辑判断的时候,可能会用到if…else之类的条件语句。但是,shell中非同寻常的语法会让你每次都需要在网上重新查询确认。在shell中,即使是一些标点…

    2022年7月11日
    23

发表回复

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

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