我要学编程

我要学编程

IDC:未来5年智能网联车年出货量复合增长率为16.8%

IDC:未来5年智能网联车年出货量复合增长率为16.8%

根据《IDC全球智能网联汽车预测报告》数据,未来5年智能网联车的年出货量复合增长率为16.8%,智能网联汽车市场将迎来快速发展。其中,可以连接三方服务平台的车辆以及配备嵌入式移动网络的全球智能网联汽车出货量,在2019年达到5110万辆,与2018年相比增长了45.4%。IDC预计,到2023年,全球智能网联汽车的出货量将进一步增至7,630万台,年增长率为9.3%。

全球在不断变暖,飓风也变得越来越强

一项新的分析表明,随着全球不断变暖,飓风变得越来越强。

长期以来,想要研究飓风如何随时间变化相对困难。科学家用来研究飓风的工具总在不断发展变化。用不同仪器得到的测量结果之间没有可比性。因此,尽管各种研究总体表明,全球变暖将产生更猛烈、更强大的飓风,但目前数据还不够完善,这一点难以完全确定。而5月18日发表在《美国国家科学院院刊》(Proceedings of the National Academy of Sciences)杂志网络版上的一篇新论文旨在改变这一现状。

这项研究对1979年至2017年的飓风进行了研究比较,跨度长达39年时间。研究人员以某种方式将期间的飓风数据进行归一化处理,并发现了一个明确趋势:总的来说风暴的确越来越强,主要热带气旋产生得越来越频繁。

根据美国国家海洋和大气管理局(NOAA)的报告,研究人员所分析的39年数据涵盖了一个气候变化急剧加速的时代。在这39年中,世界每年都在显著变暖,其中包括有记录以来10个最暖年份中的8个。虽然,2018年和2019年也是最暖年份的名单,但对这项研究来说时间上太过接近。

美国国家海洋和大气管理局科学家、威斯康辛大学麦迪逊分校教授詹姆斯·科辛(James Kossin)在一份声明中说:“我们发现飓风变化趋势的主要障碍是,飓风数据往往是用当时最好的技术收集的。”“每年的数据都与去年有所不同,每颗新卫星都会用新工具以不同方式捕捉数据,所以最终我们得到的是所有卫星数据交织在一起的大杂烩。”

为了创建出具有可比性的统一数据记录,研究人对最新生成的清晰热带气旋图像边缘进行模糊化处理,将所有图像都统一成一个标准:图像中的每个像素代表8公里乘8公里的区域,且每三个小时更新一次。研究人员还去除了一些此前技术无法观察到的最新卫星图像。这就给他们留下了一个庞大的数据集,其中包含约22.5万张质量类似的图像,其中约4000张全球热带气旋的图像可以追溯到上世纪80年代。

长期以来,气象学家一直使用热带气旋图像来估计风力强度,以千吨为单位。研究人员通过分析,发现任何既定热带气旋演变成为飓风的几率在不断上升。通常情况下,飓风被定义为风速至少为119公里/小时的风暴,也就是65节左右。速度达到100节的风暴被称为大型飓风,其发生的几率增加了15%,其中大部分发生在39年研究期的最后19年。

目前还没有完全排除其他可能性。研究人员写道,研究结果本身并没有排除这样一种观点,即飓风数量的增加并不是其他各种因素巧合的结果。但确定的是,研究显示出飓风正在趋于变强,而且恰恰发生在全球变暖最严重的时期,与气候变暖如何影响热带气旋的预测模相符。研究人员在研究报告中写道,包括模型和真实世界观测结果在内的各种证据都有力地支持这样一种观点,即热带气旋“已显著增强,而且很可能与人类活动有关”。

研究人员写道,这种趋势并不明显。像北太平洋等地区的气旋并没有变得更强,这可能是因为气候变化也将风暴路径整体向北移动,转移到海洋能量更少的寒冷地区。世界范围内更强风暴的平均趋势被其他因素复杂化了,比如大西洋洋流循环使得这些风暴在近几十年变得更加强烈。研究人员写道,这篇论文并没有完全理清像全球变暖下的局部趋势,但有95%的把握确定,在气候变化最剧烈的时期,热带气旋已经明显增强,导致更多热带气旋成为飓风,更多飓风成为“主要飓风”。

来源网易科技《知否》栏目,好奇世界,

自学编程的 6 个致命误区

01、追求时髦
所谓基础不牢,地动山摇啊。可很多小伙伴压根就没注意过这个问题,市面上出什么新鲜的技术就想去尝试,结果把自己学的乱七八糟,心灰意冷。

别的语言我不懂,就拿 Java 来说吧。时下最火热的技术,有微服务 Spring Boot、有分布式 Spring Cloud,虚拟容器 Docker,流处理框架 Flink 等等等等,但如果你连 JDK、JRE 和 JVM 都搞不清楚的话,那这些技术学起来可想而知有多痛苦。

我从一开始写作那会就计划着用半年的时间把 Java 基础方面的文章写完,结果呢,写了一年多,发现还有特别多的内容没有覆盖到。

学习是个漫长的过程,小伙伴们在学习一门语言的初期,一定要从基础开始,不要着急,时髦的东西咱把基础夯实以后再来吃,不然容易撑着哈。

02、孤军奋战
透露给大家一个小心得,我有很多知识都是从小伙伴的留言当中学到的。

我写文章从来不怕自己犯错,因为我有一颗强大的心,经得住批评和嘲讽。金无足赤,人无完人嘛,况且我一直认为自己就是一枚菜鸟,本着这种谦虚谨慎的态度,我想说一句哈,文章中有些知识点写错了,不是我不负责任,是我也在学习,我又不是孔子,传道受业解惑的,纯粹是为了和大家交流而已。

对吧?如果你没有分享的勇气,只肯自己闷头学习,那么不好意思,你的成长是很有限的。

这就和打战是一样的道理,要团队配合,不可孤军深入。

我已经建了 8 个学习交流群了,有些小伙伴进去后一开始嫌人少,不想做元老,想去人多的,可到了人多的群里仍然沉默,一言不发;有的小伙伴呢,不管三七二十一,有问题就是问,这次没人回答,下次还是问。

这种心态非常值得肯定。为什么这么说呢?群嘛,不可能所有人都在盯着你的问题,也不是所有人都会解答你的问题,问不到答案是很正常的一件事。

但提问本身是具有重大意义的,因为你会在提问的过程中组织语言,你总得把问题描述清楚啊,不然别人解答也无从下手,对吧,陈述的过程是要花心思的。一旦你的大脑在高速运转,那么答案很可能自己就找到了。

03、刻意记忆
有好几个小伙伴曾发私信给我说,“二哥,总感觉学完就忘,可怎么办啊?”

其实这种困惑真的没有必要,因为人总会忘的,忘是一种常态,我连勾股定理都忘了。还记得张三丰教张无忌太极拳那个桥段吧,忘,忘了,才能学新的。

我们学习,其实从某种层面上来看,学的是一种学习的能力,而不是死记硬背的知识,对吧?

在我的概念里,不管你是名校毕业,还是野鸡大学毕业,只要你能在工作中解决问题,那就会受到重视。解决问题就不需要你记忆大量的知识点,记不住了问搜索引擎啊。

其实,我最讨厌的就是那些炫耀记忆力的,真不如炫耀一下学习力。互联网解决了人类一大难题,就是信息的存储和检索,对吧?

我上学的年纪,没有手机,没有互联网,查个字只能翻一本厚厚的新华字典,效率极低。甚至为了写作文,背大量的名句典故,虽然现在考生还需要,但我觉得早晚要被取代。

对于程序员来说,就更没有必要记那么多知识点了,除非——你要面试。说起来这事,我觉得很有必要以后面试的时候,上机联网考试,咱们不扯那些没用的,你要造火箭,咱造就不就完事了。

多花点心思搞创新,提高学习能力,它不香吗?

04、怀疑自己
世界上优秀的人毕竟是少数,大部分都非常平凡。只有意识到这一点,你才能做到不妄自菲薄。

我时常遇到一些小伙伴,说:“二哥,我学历不好,我出身不好,我在公司好像不受到重视。”针对这些小伙伴,我只能说,心理建设真的非常非常重要。老怀疑自己,你怎么可能变得更强?赶紧把那些自卑扔到垃圾桶,与其卖惨博同情,不如自我超越。

不是所有人都是学霸,也不是所有人家庭条件都很优渥,作为一个平凡人,我们必须要学会自信,学会扬长避短。

我就写不了高大上的技术文章,甚至有些文章还会出现一些错误,没关系的,真的,有人爱喷就让人家喷啊,那是人家的自由。

因为被别人喷就停滞不前,不敢分享,那是弱者的表现,真正的勇士敢于直面别人的口水。我敢说我就很勇敢,有啥好怕的呢?总有人欣赏你的。

我以前非常喜欢一本书,叫《自卑与超越》,读了很多遍,虽然没有找到超越的秘诀。但不得不说,这本书的书名非常棒,对吧?不要和那些优秀的人比,你需要超越的不是他们,而是从前的自己。我就不信,真的是活一天不如一天?

可以允许别人超越你,但绝不能允许自己怀疑自己。

05、收集资源
好像网络上特别流行一句话,叫做:“收藏从未停止,学习从未开始。”每次看到都觉得特别扎眼,有些人是处于调侃,有些人呢,是真的养成了习惯,见到好的文章,见到长篇大论就赶紧收藏,但从来没有认真从里面学习到一丁点知识。

哪怕你看 100 字,看 200 字,从中真的学习到一点,然后把它扔到垃圾箱,都比你把它放到收藏夹吃灰,强上一百倍。

我公众号里不是整理了 500G 的教学视频嘛,然后我就观察啊,有些小伙伴呢,一次性就想把所有的视频全都取走;而有些小伙伴呢,一天过来取一集。我认为,后者要比前者更能学到知识。

网络上资源真的是已经泛滥了,除了坏的,好的都快。。。。。。你花一辈子都看不完,真的。

与其收藏,真不如每次看到就学一点,哪怕学一分钟,对吧?

最近一段时间,我每天到 B 站刷 2 集视频,咱不多刷,然后就地消化,等到真的融会贯通了,再去刷新的。

这样的好处显而易见,刷一集就吸收一点,长年累月下去,那自然身强体壮啊。

06、想学最好的编程语言
每次谈论“谁是最好的编程语言”这个话题,总忍不住把“PHP 是世界上最好的语言”这个梗扔出来。真的,不管是不是梗,“想学最好的编程语言”就是一个伪命题。

每种语言都有它存在的道理,但也有它的生命周期。我们所能做到的,就是学一门,爱一门,真的把它变成养家糊口的工具。

对于程序员来说,技术永远都是学不完的,因为时代在进步啊,新鲜的有活力的新语言早晚都要出现。如果你不能从中获利,那么学哪门语言都白搭。

就目前来说,Java 肯定是就业形势非常好的一门语言。Python、C++、C#、C 等等等等,几乎市面上没有被淘汰的语言都值得去学,不要挑肥拣瘦。

我记得有一次,有个小伙伴就给我说,“二哥,你这么优秀,能预测一下未来十年里哪门语言最火吗?”

哎呀,我去,当时我就感觉自己要懵逼。未来十年,计划得可真长远。别说十年,五年内我都预测不了。

纠结于这个命题的小伙伴,让我想起了“铁饭碗”。偶尔听一些长辈谈论,你家孩子上那个什么什么学校吧,学什么什么专业吧,保准毕业后拿到一份稳定的工作,都什么年代了,还这么向往“铁饭碗”啊。

语言之间都是相通的,真不假,虽然各自有各自的壁垒,但像我这种对编程没有极致追求的程序员,不也凭借 Java 这门编程语言养活了自己嘛。

在我这 10 年程序生涯中,我搞过 Ruby,SQL、Flex、ActionScript、JavaScript、PrimeFace,甚至还有一段时间自学过 PHP。无论哪门子编程语言,我敢拍拍胸脯说,我能学会。关键是,挣到了钱,你信不信?

谈钱多俗,对吧,但你学一门语言不就是为了挣个面包钱吗,只要能帮助我们达到这个目的,就是最好的编程语言。

COBOL 程序员不是都被抢了吗?

好了,亲爱的读者朋友,以上就是本文的全部内容了,能看到这里的都是最优秀的程序员,我必须要伸出可爱的大拇指为你点个赞。
————————————————
版权声明:本文为CSDN博主「沉默王二」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

任职13年后 马云即将退出软银董事会

软银集团股份有限公司(9884.OT)发布公告,阿里巴巴集团(NYSE:BABA,09988.HK)创始人马云将在6月25日辞去董事职务。截至目前,马云已在软银董事会任职13年。6月25日,软银将召开年度股东大会。

软银首席执行官孙正义的“朋友圈”已先后辞去董事职务,包括2019年底卸任的优衣库运营商迅销集团主席兼首席执行官柳井正(Tadashi Yanai),其担任了软银董事18年,日本电产首席执行官永守重信(Shigenobu Nagamori)),也在2017年就离开了董事会。

在软银公司官网对其发展史的记录中,2000年投资阿里巴巴2000万美元的故事,作为其引领信息革命的开端。这笔投资是软银目前最有价值的投资。

软银将在周一晚些时候公布截至3月31日的财年业绩。不过,在此之前,其多笔投资遭遇危机。4月13日,软银集团发布了一项声明,更新了全年财务业绩预测,即2019财年,软银愿景基金预计录得约1.8万亿日元(约170亿美元)的投资损失。

软银股价从3月末开始上涨,当月23日,软银宣布董事会已批准出售变现资产,在未来一年内筹集至多4.5万亿日元(约410亿美元)的资金,并授权回购2万亿日元(约180亿美元)的普通股,其余资金将用于债务赎回、债券回购和增加现金储备。

5月18日,软银在其新增的2万亿回购规模中,董事会批准在2021年3月31日之前最多购买5000亿日元股票。董事会将在观察当前回购进展后,决定剩余部分的时间和金额。

不过,马云的退出并未影响其他10位软银董事会成员。与此同时,软银披露了新提名的三名董事,分别是软银首席财务官后藤佳光(Yoshimitsu Goto)、半导体设计公司Cadence Design Systems首席执行官以及风投华登国际创始人兼董事长陈立武、早稻田商学院教授川本裕子(Yuko Kawamoto)。后两者为外部独立董事。

新京报记者 梁辰 编辑 赵泽 校对 陈荻雁

农村网民数量突破2.5亿 网购成农民生活常态

商务部副部长王炳南12日表示,到目前为止,农村网民数量突破了2.5亿,网购已成为农民生活的常态,越来越多的服务和商品通过电商进入了农村,改变了农民的生活和消费习惯。

12日,国新办举行国务院政策例行吹风会,介绍2019年落实重大政策措施真抓实干成效明显地方予以督查激励的情况。

会上,有记者就农村电商发展情况进行提问,王炳南回应称,党中央、国务院高度重视在农村发展电子商务,多次作出重要部署,商务部会同财政部、国务院扶贫办等部门认真贯彻落实。从2014年起,连续6年开展电子商务进农村综合示范,推动全国农村电子商务发展。

“到目前为止,我们累计支持了1180个示范县,已经实现了对全国832个国家级贫困县的全覆盖,有力促进了农村电子商务事业发展。可以说,经过各地各部门多年的共同努力,广大企业的积极参与,我国农村电子商务发展迅速,成效显著。”王炳南说。

王炳南指出,农村网络零售额由2014年的1800亿增长到2019年的1.7万亿元,规模总体扩大8.4倍。具体说,农村电商具有如下特点:

一是带动了农民收入增加。电商拉近了农民与市场的距离,让农村各类产品卖得更远,卖得更好。2019年全国农产品网络零售额达到3975亿元,同比增长27%,带动300多万贫困农民增收。

二是促进了农业转型升级。农村电商带动农民更加注重产品的品质和品牌,生产的产品更加符合市场需求。

三是推动了农民创业就业。农村电商吸引了一大批农民工、大学生、转业军人返乡创业。到去年年底,全国农村网商达到1384万家。

四是丰富了农民生活。到目前为止,农村网民数量突破了2.5亿,网购已成为农民生活的常态,越来越多的服务和商品通过电商进入了农村,改变了农民的生活和消费习惯。在这次疫情期间,农村电商平台的作用进一步凸显,四川省88个示范县就组织电商、快递企业为居民配送生活物资达到600多万单,保障了城乡居民的“菜篮子”和“米袋子”。

此外,王炳南表示,当前农村电商的发展成效非常显著,当然也存在一些不足。比如像产业供应链水平差、物流成本高、人才缺少等困难,针对这些问题,商务部下一步将会同财政部等有关部门,以“提升电子商务进农村”为总抓手,加强农村流通基础设施建设,推动乡镇商贸发展,畅通城乡双向流通渠道,重点做好四个方面的工作:

一是进一步拓宽农产品进城渠道。围绕农村特色产业,打造县域电商产业集聚区,完善电商配套服务,培育区域公共品牌和网络产品,提升产业电商化水平,促进乡村振兴战略实施。

二是进一步优化工业品下乡网络。引导农村商贸企业与电商深度融合,支持流通企业在农村地区开展第三方配送服务,建设线上线下融合的农村现代流通网络。

三是健全县乡村三级物流共同配送体系。在整合农村电商快递的基础上,搭载消费品、农资下乡和农产品进城双向配送,降低物流成本。

四是加强农村电商主体培育。加大对返乡的农民工、大学生和返乡的转业军人等培训力度,打造一支农村电商的队伍,提升我国农村电商内生动力。

打造“印度版微信”(互联网大咖秀)

阿赫桑出生于印度,因父亲的工作需要经常调动,他曾在6个不同的城市长大。阿赫桑也因此变得善于适应新环境,愿意结交新朋友。在很小的时候,他就意识到人们之间的差异和共性,这也是如今ShareChat的核心所在。在坎普尔印度理工学院就读期间,阿赫桑开始与两位同学共同开发应用程序,后来于2014年成功推出社交网络平台ShareChat,它的雏形是一个方言聊天室,用户用方言聊天,自动向用户发送图片等内容。经过2次迭代,ShareChat于2015年10月进化成了如今信息流的形式。

阿赫桑负责ShareChat的运营团队,并担任首席运营官。他致力于建立一个以用户为中心的组织,吸引观众、投资者和人才。阿赫桑表示:“ShareChat是为那些有自己的本地朋友圈、想要发现其他社会群体的人而设计的。”阿赫桑对当地社会的细节、机器学习的投入、小程序生态系统有深入的理解,使ShareChat成为印度数百万网络新手的首选APP。“我们希望能够成为人们联络他人、获取内容、使用服务的入口。”他说。

努力为用户构建一种解决问题的方式,是ShareChat一直以来所信仰的。ShareChat允许用户用他们喜欢的印度语言创建、发现和分享内容,目标是开发新市场,并通过广告、有影响力的营销和应用内交易等方式将其服务货币化。2019年1月,ShareChat推出3个新功能,通过其直观的用户界面提供了良好的用户体验,服务于14种印度语言的3500多万用户。如今,ShareChat从一款拥有几千用户的聊天机器人,发展到一个大型地方语言社交平台,成为印度最炙手可热的互联网公司之一。

CoreDNS解析异常记录

CoreDNS解析异常记录 

异常情况:集群是用kubespray部署的4个worknode,coredns默认部署2个deployment。今天发现部署了coredns的node上的pod正常解析内部域名,而另外2个未运行coredns的node却无法解析。

 配置文件:

 下图中我们看到coredns2个pod分别在node1与node2上,只要分配到这2节点上的deployment都可以正常解析。

其他节点无法解析:

 处理过程:

正常来说所有的pod都是通过coredns来进行集群内域名解析的,我也搞不清楚为啥其他两个node没有跑coredns则就无法解析后面再研究。所以我临时的解决方法是扩容coredns让每个node都跑。

1、修改 ConfigMap 中的 dns-autoscaler(coredns自动扩容保证高可用)

kubectl edit configmap dns-autoscaler --namespace=kube-system

2、修改key:linear

  • coresPerReplica: 按照核心数目来计算副本集(replicas = cores / coresPerReplica)
  • nodesPerReplica:按照节点数目来计算副本集(replicas = nodes / nodesPerReplica)
  • min:最小副本数(默认为2,我先有4个节点改为4)
  • max:最大副本数
  • preventSinglePointFailure:防止单点故障

公式

replicas = max( ceil( cores × 1/coresPerReplica ) , ceil( nodes × 1/nodesPerReplica ) )

 

 

 

[Abp vNext 入坑分享] – 2.简化项目结构

一、简要说明

本篇文章根据我自己的需要对项目结果进行简化,让项目结构更符合我自己的要求,同时让项目跑起来。仅供参考

二、具体步骤

2.1卸载掉对我来说目前使用不上的项目,identityserver,mongodb,httpapi.client,以及对应的test项目

 

 

 

 

2.2删除掉下图红框中的包与类文件,由于我后期会创建一个独立的项目来做migrations,所以不需要在HttpApi.Host里面直接使用EF相关的操作,而且个人认为这样会模糊掉abpvnext的层级,混乱了层级的职责。

 

 

 

上图的报错都是由于我删除了相关的包引起的,因此跳转到相关文件中,把所有的报错行,全部删除。同时由于我没有启用redis的服务,所以要把下图的redis服务也先行注释掉。

2.3将启动模式修改成:如下图,同时把原来输出日志到文件的模式修改成:console(),以便在控制台时能很直观的看到Log。调试项目,则可以启动成功了。

 

 

 

 

 

2.4在src下面增加DbMigrations类库,注意:此处只能选择.netcore类型的类库,不能是只属于netstandard这样会导致无法使用。创建后的样子如下,这样就可以使用此项目进行migration操作了,且不会影响主线代码。

 

 

 

1.关于DbM_LearnDbContext这个类,如果你能保证整个项目的所有开发人员都只能使用codefirst进行开发的话,可以直接继承主的LearnDbContext,这样LearnDbContext的所有DbSet都会得到继承,则不需要再重复写dbset。

2.若是codefirstdbfirst混用的情况,则不要继承

3.单纯dbfirst的话,此项目可以去掉

kafka消息分区机制原理

背景

kafka如何支撑海量消息的集中写入?

答案就是消息分区。

核心思想是:负载均衡,采用合适的分区策略把消息写到不同的broker上的分区中;

其它的产品中有类似的思想。

比如monogodb, es 里面叫做 shard;   hbase叫region,  cassdra叫vnode;

消息的三层结构

如下图:

即  topic -> partition -> message ;

topic是逻辑上的消息容器;

partition实际承载消息,分布在不同的kafka的broke上;

message即具体的消息。

分区策略

round-robin轮询

消息按照分区挨个的写。

randomness随机分区

随机的找一个分区写入,代码如下:

List<PartitionInfo> partitions = cluster.partitionsForTopic(topic);
return ThreadLocalRandom.current().nextInt(partitions.size());

key

相同的key的消息写到固定的分区中

自定义分区

必须完成两步:

1,自定义分区实现类,需要实现org.apache.kafka.clients.producer.Partitioner接口。

主要是实现下面的方法:

int partition(String topic, Object key, byte[] keyBytes, 
              Object value, byte[] valueBytes, Cluster cluster);

比如按照区域分区。

List<PartitionInfo> partitions = cluster.partitionsForTopic(topic);
return partitions.stream().filter(p -> isSouth(p.leader().host()))
    .map(PartitionInfo::partition).findAny().get();

2,显示配置生产者端的参数partitioner.class为具体的类

系统默认:如果消息有key,按照key分区策略,否则按照轮询策略。

小结

kafka的分区实现消息的高吞吐量的主要依托,主要是实现了写的负载均衡。可以指定各种负载均衡算法。
负载均衡算法非常重要,需要极力避免消息分区不均的情况,可能给消费者带来性能瓶颈。

小结如下:

原创不易,点赞关注支持一下吧!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。
我会持续分享Java软件编程知识和程序员发展职业之路,欢迎关注,我整理了这些年编程学习的各种资源,关注公众号‘李福春持续输出’,发送’学习资料’分享给你!

Unity ML-agents 一、初次尝试

前言

曾在高二寒假的时候,跟表哥在外面玩,当时他问我有没有想过以后要做什么,我愣了一下,回答不上来。是的,从没想过以后要做什么,只是一直在完成学校、老师安排的任务,于是那之后半年,我一直在思考,大学要学什么。在大二下期中之后,我觉得自己还是对游戏更感兴趣,便想到以后想做游戏。于是,高考后填志愿,填的都是计算机专业。在大一的时候,自学了一段时间的 Unity,到大二在实验室接触强化学习之后,就想着用 RL 来做游戏 AI,但后来一直在做数据挖掘相关的内容,基本上以参加比赛为主。直到去年参加上海的谷歌开发者节,了解到 ML-agents 之后,就十分的想尝试。

然后由于疫情,直到现在还在家里咸鱼,前段时间一边咸鱼一边投简历,奈何自己水平太低又偏偏想投算法岗,直到现在也没有几次面试机会 orz。最近就想继续当年未完成的 Unity 的学习,顺便学习 ML-agents,回到原点,重新出发。

初试 ML-agents

环境配置

既然要尝试,肯定免不了环境配置
目前我的环境为:

  1. Win10
  2. Tensorflow 2.0
  3. ML-agents 0.15.0
  4. Unity 2019.3.1f1
    关于 Tensorflow 2.0 的安装,参考我之前的博客,Unity 的安装,推荐先下载 Unity Hub,通过 Unity Hub 可以管理不同版本的 Unity,下载戳这里

ML-agents 的安装有两种方式
一是直接 pip

pip install mlagents

二是从官方 github 中 clone 整个项目,然后 cd 到目录中

pip install -e ./ml-agents-envs
pip install -e ./ml-agents

到这里,环境配置就算完成了

跑个 Demo 先吧

在 Unity Hub 中导入刚刚从 github 上 clone 的项目

选择 Unity 版本之后打开

然后打开 3DBall 这个场景

点击运行的话可以直接看到效果

接着,开始尝试自己训练,打开命令行,进入到之前 clone 下来的项目目录中,并在目录中创建一个名为 summaries 的文件夹

然后输入

mlagents-learn config/trainer_config.yaml --run-id=test --train

在出现图标之后,切换到 Unity 运行项目,就可以看见开始训练了

可以看出来一开的效果是很差的,完全控制不好,这次训练大概训练 40w+ 步,到后面就很稳了

注:项目目录中尽量不要出现中文,下午在尝试的时候一直报错,后来更改目录之后发现成功了,不清楚是不是路径中有中文的原因
报错内容

 "The Unity environment took too long to respond. Make sure that :\n"
mlagents_envs.exception.UnityTimeOutException: The Unity environment took too long to respond. Make sure that :
         The environment does not need user interaction to launch
         The Agents are linked to the appropriate Brains
         The environment and the Python interface have compatible versions.

训练完成后,我们可以在 models 目录下看到刚刚训练好的模型,重命名一下,然后把模型拖到 TFModel 目录中

接着打开 prefabs 中的 3DBall,点击其中的 agent,然后将 Behavior 改成我们刚刚拖到 TFModel 目录中的模型

点击运行,发现控制的十分稳定,跟一开始差不多。至此,初试完毕。

小节

这里我们安装配置了 ML-agnets 的相关环境,并运行了个 Demo 来熟悉了遍流程,后面将开始尝试自己搭建环境,训练 AI,也不知道能不能捣鼓出来,23333。

  • 友情链接