大家好, 欢迎学习本教程｡
好了, 现在我们要从头开始实现我们的人工智能｡
我们将逐行调用它｡
在第一段代码中, 我们将导入库｡
但是在我们开始第一段代码之前, 我想解释一下AI和我们的地图P文件之间的联系｡
也就是说, 我们为什么要为地图实现这一点？
人工智能的用途是什么？我们将在哪里使用它？
所以这其实很简单｡
我们只是让我们的人工智能在每次选择正确的动作, 所以我们从我们的人工智能文件导入类中｡
因此, 我们将在此文件中创建此文档类, 但导入它只是为了每次选择要播放的正确操作｡
我们在这一行选择这个动作｡
行动等于大脑更新｡
少了奖励, 少了信号｡
较少的信号将是神经网络的输入｡
它由传感器的三个信号组成, 加上方向和减去方向｡
这就是输入｡
但输出就是要玩的动作, 这只是我们从我们的我觉得我们要做的事情中得到的｡
所以请记住这一点｡
这很简单｡
我们首先从人工智能中导入类, 然后从文档类中创建对象大脑, 它将五个维度状态的编码向量作为输入,
即三个信号加上方向加上方向减去方向｡
这三个动作是向左､ 直行或向右｡
然后这个gamma参数, 是我们要创建的类的唯一参数｡
一旦我们创建了这个对象, 我们就在游戏类中选择每次要玩的动作｡
这取决于最后的奖励和最后的信号, 也就是输入｡
这就是制作这个人工智能的唯一目的, 为了让一个真实的人工智能做出正确的动作, 每次都是正确的动作,
而不是像我们在上一个教程中观察到的那样随机动作｡
好吧, 我们开始吧｡
让我们实现我们的人工智能｡
如前所述, 我们将从导入用于实现它的所有库开始｡
这样我们就有了所有需要的工具｡
好吧, 我会的
让我们从第一个开始｡
第一个是必然的｡
NumPy库｡
我总是建议导入它｡
它是一个库, 允许我们使用数组｡
这里的这个和B只是一个快捷方式, 当我们想用numpy的时候更方便｡
好吧, 那么｡
第二个库是随机的｡
这只是因为我们在实现体验回放时将从不同批次中随机抽取一些样本｡
所以我们还得导入这个随机库｡
然后我们将导入OSS｡
这在我们想要加载模型时非常有用, 因为您知道,
一旦模型准备就绪, 我们将执行一些代码来保存模型, 然后执行另一个代码来加载模型｡
这时候我们就想, 你知道, 保存大脑, 加载大脑,
每当你想关闭你的电脑, 重新使用之前训练过的大脑进行一些新的实验｡
所以这很重要｡
然后我们要导入火炬库必备｡
这是因为我们将使用PyTorch来实现我们的神经网络, 我推荐使用PyTorch, 因为它可以处理动态图,
比其他人工智能的神经网络要多得多｡
所以我们用火炬｡
然后, 从Torch导入Torch DOT和NW｡
NW模块是最基本的模块｡
这个模块包含了实现神经网络的所有工具｡
当然, 还有一个深层神经网络, 它将三个传感器的三个信号作为输入,
加上方向和减去方向, 并将返回动作作为输出, 以发挥好, 实际上,
它将返回不同动作的Q值｡
使用软最大值, 我们将返回动作, 只玩一个, 最相关的一个完成课程目标｡
所以托尔斯滕是最重要的一个｡
然后我们要给予函数式一个捷径｡
我们从这里开始, PN模块中的功能包｡
所以这个函数包包含了我们在实现神经网络时使用的不同函数｡
通常, 最后一个功能我们将使用Uber plus,
因为它可以提高收敛性, Uber损失包含在GN模块的这个功能子模块中｡
因为这些都很长, 我们给予它一个捷径, 我们简单地称它为F｡
然后只剩下三个模块要导入｡
所以下一个是另一个重要的, 是上升的｡
蒂姆和我们把它从静止的火炬库然后向上｡
蒂姆我们走吧｡
让我们把它调出来｡
而不是燃烧, 当然这是优化器的问题.
我们将导入一些优化器来执行随机梯度下降, 所以我们肯定会需要它｡
然后我们需要导入auto, 这只是从grad中取变量class｡
所以它的目的有点技术性｡
基本上, 我们需要导入变量类, 以进行一些转换,
从像更高级的数组的传感器到包含梯度的变量｡
这就像我们不想只有一个张量｡
我们想把张量放进一个变量中, 这个变量也包含梯度｡
要做到这一点, 我们需要使用变量类, 把这个张量转换成一个包含张量和梯度的变量｡
所以这有点技术性, 但这是我们在使用PyTorch时必须做的｡
这要归功于变量类,
但是在得到变量类之前, 我们需要导入到R2的格拉德中, 我们也给予一个快捷方式｡
本科毕业后又从｡
亲笔签名的火炬｡
我们进口排球｡
我们走吧｡
现在, 我们已经拥有了将用于实现API的所有库, 因此我们无需再导入任何其他库｡
我们有了所有需要的工具, 现在我们准备好创建神经网络的架构了｡
这正是我们在下一个教程中要做的｡
在那之前, 好好享受吧｡
一､