大家好, 欢迎学习本Python教程｡
现在我们要做一个正向函数, 它将把信号从输入图像开始,
向前传播到整个大脑, 直到输出, 它将包含演员的线索值和V值,
V值是V函数为评论家取的值｡
所以这将是非常相似的, 我们做了什么毁灭战士, 但这一次有些事情要改变｡
最主要的变化是, 现在我们在大脑中有了一个自动取款机, 所以我们都必须做更多的事情来传播信号,
并小心处理｡
另一件不太重要的事情, 但是和以前相比, 还是有变化的,
那就是我们不会使用循环激活函数, 你知道, 非线性激活函数,
但是我们会使用循环, 这是一种更复杂的函数｡
我们将在Python文档中看到这一点｡
所以我们开始吧｡
让我们把这个函数｡
我们从定义开始｡
这实际上是这个活动类的最后一个函数｡
所以我们要像上次一样向前调用它｡
第四个函数是把self作为对象因为我们要使用对象和输入.
了解这些输入是什么如此重要？
这将不仅是输入图像, 这些输入还将包含隐藏节点和团队的单元节点｡
所以这就是为什么我想强调一些事情将要改变｡
现在, 基本上, 我们在转发函数中考虑STM的单元节点中的隐藏节点｡
现在我们要做的就是把这两个输入分开, forward函数的输入, 我们怎么把它们分开呢？
我们可以调用一个新的变量, 它将是输入图像｡
这一次, 输入图像, 我们用元组H, X和Cx, 把它们分开,
这是一对隐藏状态和lsg的单元状态, 所以hx是隐藏状态, cx是单元状态｡
好吧, 我会的
这将等于输入｡
这就是这个论点｡
所以现在我们做了这个分离, 因此我们可以开始在整个大脑中传播信号｡
为了做到这一点, 我们要连续地得到不同的层,
从第一层到最后一层, 通过使用一个连接, 也就是卷积, lshtm连接和这里的线性连接, 全连接｡
所以我们现在就开始吧｡
它会和以前一样｡
我们将得到第一层,
称为X, 为了得到第一层,
我们需要将信号从输入传播到第一层, 因此我们需要使用第一次卷积, 因为正是第一次卷积将信号从输入图像传播到第一层｡
我们现在要做的是复制它,
因为这是我们粘贴在这里的第一个卷积, 我们将第一个卷积应用到我们的输入图像, 现在是正确的输入｡
好了
其将来自输入图像的信号传播到第一层｡
但现在请记住, 我们必须使用非线性激活函数来打破线性,
以便能够学习图像内部的非线性关系｡
要做到这一点, 我们将使用ALU激活函数, 我们将在PyTorch文档中看到该函数｡
但在那之前, 先把它弄到手｡
为了得到它, 我们实际上取一个函数模块, 它有一个短的片段,
F, 然后是点, 然后是Alu, 然后我们把这些都放在括号里, 因为我们想非线性地激活第一层的神经元,
我们在输入上应用第一个卷积得到的｡
现在让我们来看看PyTorch, Doug, 来了解ALU是什么｡
在这里, 你可以访问它到pytorch点org斜线doug斜线rn点html｡
然后你必须找到非线性激活｡
在非线性激活函数中, 你会发现, 卢, 这是我们所知道的经典函数｡
所以这只是一个0和x的最大值, 你已经有了这个图, 然后你有了版本6, 就是这个｡
所以更复杂一点｡
好了
我们有一个卢｡
正如你所看到的, 循环就是一个循环加上一个额外的元素｡
所以它是一个更复杂的值｡
这就是我们用来非线性激活不同层神经元的方法｡
顺便说一下, 这个循环激活函数被称为指数线性单位｡
好了, 我们走吧｡
我们在第一个卷积层上应用了循环, 现在事情就简单了｡
我们将继续进行信号的下一个第四传播,
即从第一卷积层到第二卷积层, 我们将其称为X,
因为基本上我们只是更新X, 现在x是第一卷积层, 通过将信号从第一卷积层传播到下一个卷积层, x将成为下一个卷积层｡
因此, 要将信号从第一卷积层传播到第二卷积层, 我们可以简单地复制并粘贴到这里, 然后用conf
2替换conf 1｡
当然, 现在第二次卷积不是应用于输入图像, 而是应用于x｡
这是第一个卷积层, 就在这里｡
好吧, 完美｡
现在, 我们得到第二卷积层, 现在让我们再次将信号从第二卷积层传播到第三卷积层｡
因此, 我们可以直接复制这个和这个, 然后用三个来代替两个｡
我们走吧｡
最后一个是将信号从第三卷积层传播到第四卷积层, 也是最后一个, 我们可以再次复制,
粘贴到这里, 并将3号营替换为4号营｡
我们走吧｡
让我们回顾一下｡
我们从输入开始｡
我们应用第一卷积以获得第一卷积层｡
然后, 我们将第二卷积应用于第一卷积层以获得第二卷积层｡
然后, 我们将第三卷积应用于第二卷积层以获得第三卷积层｡
最后, 我们将第四个卷积应用到第三个卷积层, 得到第四个卷积层,
这就是信号如何通过人工智能的眼睛传播的｡
好了, 我们走吧｡
我们现在有了四次卷积后的输出信号, 现在你知道该怎么做了｡
我们需要将整个输出信号扩展为一维向量｡
这是压平步骤｡
所以我们要再次更新X｡
X现在变成了这个平面化的一维向量｡
要做到这一点, 我们需要取X, 这是目前为止的第四个卷积层｡
然后我们使用Vue函数, 首先输入-1表示我们想要｡
一维向量｡
然后作为第二个参数, 我们需要输入这个向量中的元素个数, 记住,
32乘以3乘以3, 所以我们在这里输入32｡
乘以三乘以三｡
我们走吧｡
现在我们有了展平的向量, 展平步骤完成了｡
好极了｡
现在让我们来处理最后一部分｡
正如你所理解的, Lshtm接受我们的输入｡
展平的向量, 这个一维的向量, 由三, 二, 三, 三个元素组成｡
所以它已经准备好了, 为Lshtm做好了充分的准备｡
Lshtm现在已经准备好将这个展平的向量作为输入, 因此我们可以将lshtm和输入作为参数｡
第一个X是展平的矢量, 就是我们刚刚用过的x射线｡
但这也是这个双打发挥作用的地方｡
我们需要输入H, X和C, x, 我们可以使用x, 这里看到x,
因为我们把它和forward函数的原始输入参数分开了｡
所以lshtm, x, 最多四个卷积的展平输出向量, 以及这个隐藏节点和单元节点的表｡
好了, 我们走吧｡
然后我们不能忘记自我, 因为lshtm是我们最终函数的一个变量｡
所以变量会连接到对象上, 所以LCM会返回到输出, 一个包含两个输出的表,
这两个输出是输出健康节点和输出单元节点｡
所以它实际上是一个元组, 所以我们可以更新hx隐藏节点, 看到x单元节点, 因为这就是lshtm的输出｡
好极了｡
所以我们现在差不多完成了｡
现在我们有了LLS小组的输出, 我们需要得到有用的输出,
因为实际上只有印度音符是有用的, 所以我们要通过再次更新x得到它, x现在等于｡
LSB x的输出对的第一个元素等于h x, 我们差不多完成了｡
记住, 我们有两个大脑, 一个是演员的大脑, 一个是评论家的大脑｡
因此我们必须输出信号, 以返回演员的输出信号和评论家的输出信号｡
因此, 现在我们要做的是返回这两个输出信号｡
我们怎么才能做到呢？
这很简单
我们只需要得到线性的全连接｡
但是, 独立的, 有线性的, 完整的连接的批评家和线性的完整的连接的演员｡
我们将这些连接中的每一个应用到输出x, 它是lshtm的有用输出, 也是输出信号的全部｡
好了, 开始吧｡
我们首先把self作为对象, 然后我们得到critic的线性脚连接,
这是critic下划线线性, 我们把它应用到x, lshtm的输出信号, 然后我们再把self,
然后, 然后我们得到actor的线性全连接, 这是actor下划线线性, 我们把它应用到x｡
我们走吧｡
所以这是我们需要的主要东西｡
但我们也会返回所有隐藏的顶部音符, 并看到X来卖出音符,
因为我们稍后会在LSB场景的复古循环中使用它们｡
好吧, 完美｡
所以现在我们已经完成了大脑或者我应该说大脑, 因为我们实际上做了两个大脑, 一个给演员, 一个给评论家｡
所以恭喜你做了a3c大脑｡
我希望这不是太压倒性的联合收割机CNN和LCM, 但至少好消息是, 我们真的是与最好的和最强大的模式｡
好了, 我们走吧｡
实际上, 我们已经完成了第一个文件模型, 即饼图｡
在下一个教程中, 我们将讨论优化器, 因为我们将创建一个单独的优化器｡
我们不打算编写每一行代码, 因为很多代码来自研究论文｡
这是非常具体的｡
如果我们深入了解这个优化器的详细情况, 对于接下来要发生的事情来说, 这可能有点太难了,
因为我们还要创建train函数, 这将是一个巨大的函数,
其中包含风险算法｡
所以相信我, 你要保持一些精力, 因此我们不会花太多时间在这上面｡
但是, 我仍然会解释代码, 您将理解这个优化器背后的整个思想｡
再次祝贺你创建了这个活跃的创造性类, 我会在下一个教程中看到你创建优化器｡
在那之前, 好好享受吧｡
一､