大家好, 欢迎来到我们制作大脑的最后一步｡
我们有一个向左的函数｡
这是将在神经网络的所有层中传播信号的前向函数, 包括三个卷积层和全连接层｡
所以这个函数是正向函数,
和自动驾驶汽车的正向函数完全一样, 只不过这次我们必须在全连接层之前的卷积层中传播信号｡
好消息是, 我们已经在前面的步骤中使用了计数神经元函数,
所以我们已经有了在卷积层中传播信号的代码｡
所以这会很快｡
我们将把我们在这里所做的和我们在自动驾驶汽车上所做的结合起来, 我们将得到我们大脑的向前功能｡
所以我们开始吧｡
我们在这里引入了一个新的函数, 最后一个用于大脑的函数, 这个函数是前向函数,
它的自变量和self之前的自变量完全一样, 来引用对象和x, x首先是输入图像, 然后随着信号传播到神经网络中,
X会被更新｡
好了, 科林, 我们进去吧.
正如我刚才所说的, 我们已经编写了代码, 在三个卷积层中传播信号｡
这就是这三行代码｡
所以我把它们复制粘贴在这里和那里｡
我们已经在三个卷积层中传播了信号,
现在只需要将信号从卷积层传播到隐藏层, 然后最终传播到输出层, 即神经网络的最末端｡
要做到这一点, 我们首先需要将这里得到的第三个卷积层展平｡
请记住, X首先是输入图像, 然后这里X变成第一卷积层,
然后这里X变成第二卷积层, 然后这里X变成第三卷积层｡
现在, x是第三个卷积层｡
现在为了得到展平层, 我们需要展平第三个卷积层x｡
为了做到这一点, 我们要做一些和这里非常相似的事情｡
只不过这次我们不需要神经元的数量｡
我们只需要在第三卷积层中平坦化信道｡
所以这将是相当简单的, 但非常相似｡
为了更好地完成这个过程, 我们再取一次X, 因为X将成为展平层｡
所以我们只是更新了x, 所以x等于｡
然后我们再取x｡
但是这个x是旧的x, 也就是第三个卷积层｡
所以我们取第三个卷积层, 然后是点, 然后取视图函数, 我们给它两个参数｡
第一个是x点大小0｡
所以, 我们再一次用尺寸函数来取第三卷积层中所有通道的所有像素, 我们把它们一个接一个地放进去｡
这个巨大的向量将变成这里的x, 这个x将成为全连接网络的输入｡
但这还不是我们要加的全部, 逗号和-1｡
你可以在PyTorch教程中找到这个技巧｡
这就是如何使用size函数来展平由多个通道组成的卷积层｡
当然, 如果你想了解更多关于如何工作的细节, 你可以去pytorch教程｡
我会提供链接｡
现在我们有了平坦化层,
这个平坦化层将成为一个典型的全连接网络的输入端, 信号通过简单的线性传输｡
所以现在我们不使用卷积函数来传递信号｡
我们将对线性类使用线性传输, 然后打破线性,
因为我们处理的是图像, 图像具有非线性关系,
我们将使用校正函数来学习这些非线性关系｡
所以我们开始吧｡
这实际上是下一步｡
这和我们为自动驾驶汽车所做的完全一样｡
我们取X是因为我们想再次更新它｡
我们现在要获取隐藏层｡
首先我们要做的是把我们的全部联系｡
FC一是因为全连接｡
FC 1是连接展平层和隐藏层的层｡
因此, 我们需要取FC 1, 并将其应用于我们现在拥有的X, 即展平层｡
当然我们也不会忘记self, 因为FC one是init函数的变量, 所以self也是FC
one x, 这样就线性地把信号从展平层传递到隐藏层｡
但现在我们需要激活这些神经元, 同时打破线性｡
这正是我们对整流器激活功能所做的｡
现在我们要做的就是把功能模块｡
而从这个功能模块我们｡
当然, 我们的修正函数, 也就是值, 我们把self, FC, 放在括号里｡
好吧, 我会的
在这行代码中, 我们首先将信号从平坦层传播到全连接网络的隐藏层｡
然后我们激活这个隐藏层的神经元, 用这个整流激活函数打破线性｡
我们得到了隐藏层X｡
好极了｡
现在我们又少了一步｡
当然, 它是将信号从隐藏层传播到具有最终输出神经元的输出层｡
而要做好这一点, 那是非常简单的｡
这和我们为自动驾驶汽车所做的完全一样｡
我们开始第二次完整连接｡
当然, 我们把它应用到, 隐藏层的神经元上, 也就是现在的x｡
这里x是隐藏层的神经元｡
这个旧的x和这里的x当然变成了包含Q值的输出层的输出神经元｡
最后我们简单地返回输出神经元, 也就是X和Q的值｡
太完美了｡
恭喜你啊
我们刚做了个大脑｡
我们只是用眼睛和其他细胞制造了眼睛的大脑｡
所以恭喜你
现在是时候让身体定义我们将如何发挥的行动后, 所有的信号在大脑中处理｡
这是我们的第二个重要步骤｡
让我们在下一个教程中进行此操作｡
在那之前, 好好享受吧｡
一､