大家好, 欢迎学习本教程, 这几乎是本模块的最后一个教程｡
在我们得到令人兴奋的结果并观看视频之前, 我将解释执行整个过程的主要代码｡
这是主代码, 如你所见, 这段代码很短｡
我们首先导入库和模块, 以及我们创建的不同类和函数,
例如模型文件中的active critic､ train文件中的train函数和test文件中的test函数｡
当然, 我们还导入了优化器｡
然后我们从第一部分开始, 我们进入一个类, 所有的参数, 这是这个参数｡
记住, 这是我们每次从params类中创建的params对象, 比如学习率, gamma或tau｡
让我们快速浏览一下｡
第一个R是学习率｡
所以如你所见, 我们选择了一个小的学习率｡
第二个是gamma参数｡
同样, 我们将其视为8｡ 99.
我们采用一个类型参数, 一组116个进程, 20个步骤, 最大长度为10, 000｡
还记得我们说过的吗
这是我们设置的参数, 以确保代理不会无限期地陷入环境状态｡
所以这将停止游戏, 如果插曲长度超过这个最大插曲长度｡
当然, 最终我们得到了环境的名称, 去掉了零｡
顺便说一下, 你也可以在其他环境中玩, 只要改变这个环境的名称｡
所以, 如果你想玩一些其他的突破版本,
甚至一些其他雅达利游戏, 好吧, 你可以简单地取代这个突破视觉这里的一些其他游戏, 但我可以告诉你, 突破视频已经非常具有挑战性｡
好吧, 我会的
所以这里所有的参数, 然后是主运行的主代码｡
这里, 让我们看看我们在第一行做了什么｡
我们为每个内核设置一个线程｡
然后在第二行中, 我们通过创建params类的一个对象来获取所有参数, 该对象将获取一个initialize｡
所有这些参数都在这里, 因为有变量附加到这个参数对象上｡
然后设置种子, 然后使用create条目和函数获取环境, 并使用环境的名称（从零开始）｡
您会看到该env名称, 因此该env名称的params会以零分隔｡
这样我们就能得到突围的环境｡
顺便说一句,
这不是创建环境的常用方法, 而是为了改进整个流程并提高性能, 同时我们使用它来实际创建一个优化的环境, 这要归功于Universe｡
Universe是一个软件包, 它附带了您在露天安装的所有软件包｡
多亏了宇宙, 我们得到了一个优化的环境.
这就是这里的一切｡
然后, 我们通过创建一个活动评论家类的对象来获得共享模型｡
因此, 在这里, 重要的是要理解这个共享模型是由不同的代理共享的模型｡
因此, 我们在不同的内核中有不同的线程｡
说到下一行的线程, 即共享内存的共享模型,
我们要做的是将模型存储在计算机的共享内存中, 以便所有线程都可以访问它, 即使它们位于不同的内核中｡
这就是我们要做的｡
这是为了启用这个｡
然后, 我们将优化器链接到共享模型的参数, 并且学习率为0｡
01.
同样, 必须了解优化器也是共享的, 因为它将对共享模型进行操作,
而下一行中的优化器将对共享内存进行优化｡
我们将优化器存储在共享内存中, 以便所有代理都可以访问它来优化模型｡
然后, 我们初始化我们的流程, 这样测试流程就不会更新共享模型, 而只是使用它在一个零件上进行测试,
并打印分数和录制视频｡
这正是Target Equals Test所做的｡
这就是测试过程, 这个过程是从多个预处理过程中得到的｡
所以这里它所做的就是在一个独立的线程上运行一个函数｡
所以当我们执行P start的时候, 我们启动了一个新的进程, 它是在这一行初始化的｡
然后用这个附加了P的进程, 我们把这个进程添加到进程列表中｡
最后, 在这个循环中, 我们只做一个循环来运行所有其他的过程, 这些过程将通过更新共享模型来训练｡
这基本上就是最后几行代码所发生的事情｡
因此, 如果您不想深入了解它的细节, 重要的是要了解,
这将以最佳方式运行流程, 因此我们都应该执行此代码, 并有一个经过训练的模型,
最终观察结果｡
所以我等不及要这么做了｡
这将是相当令人兴奋的｡
我现在会努力找到关键角色, 这样我们就可以一起看了｡
所以在下一次之前, 好好享受我｡