大家好, 欢迎学习本Python教程｡
现在我们必须定义init函数的五个变量｡
这是三个回旋和两个完整的连接｡
让我们从第一个开始｡
卷积一将卷积应用于输入图像｡
这就是原始图像｡
现在你将看到, 如何将一切变得如此简单, 以创建这个卷积｡
我们要做的就是创建一个特定类的对象, 这个类是从RN中提取的,
然后这些类就可以了.
去卫生署｡
因为我们要处理两张DH图像｡
现在, 如您所见, 我们需要输入几个参数｡
第一个在通道中, 所以让我们把它放在通道中｡
第二个是灭通道｡
第三个是内核大小, 其余的被破坏, 填充膨胀组和偏差｡
所有这些都有默认值｡
所以我们不输入它们｡
我们将保留默认值｡
但重要的是这三个参数在通道, alt通道和col大小｡
你猜它们对应什么？
很简单, in通道对应于卷积的输入, alt通道对应于卷积的输出｡
那么在渠道中, 它会是什么呢？
很简单, 这就是我们图像中的通道数｡
事实上, 我们将使用白色图像, 因为基本上我们不需要颜色来识别怪物｡
人工智能完全能够识别黑白色的怪物, 所以我们不需要颜色｡
它只能通过形状识别它们, 因此我们将使用一个通道｡
因此, 一个通道是当你有白色图像和三个通道是当你有彩色图像｡
因此, 因为我们在通道中处理白色图像, 所以等于1｡
然后我们的渠道｡
因此, 我们的通道将等于卷积层中的图像, 即卷积层的输出｡
基本上, 这等于你想要在原始图像中检测的特征数量, 因为我们会为每个想要检测的特征创建一张图像,
因为你基本上知道它是如何工作的｡
我们将一个特征检测器应用于输入图像, 以检测输入图像中的特定特征, 并因此检测输出图像的数量｡
这是我们要检测的特征数｡
那么现在的问题是我们要检测多少个特征？
通常的做法是从32个特征检测器开始｡
这将导致我们在第一个卷积层中得到32个处理过的图像｡
所以输入是一个白色图像, 一个真实的图像｡
并且第一卷积层中的输出是32个经处理的图像｡
所谓处理, 我的意思当然是对输入图像应用卷积, 以得到32个具有检测到的特征的新图像｡
然后我们需要指定一个核大小, 它就是要穿过原始图像的正方形的尺寸｡
在通常的实践中, 我们使用二乘二､ 三乘三或五乘五, 对于第一个,
我们将使用五乘五特征检测器｡
这是一个具有5 × 5维的特征检测器｡
然后, 我们将为下一个卷积层减小该内核的大小｡
说起来, 这正是我们现在要做的｡
我们要复制这个来定义第二个卷积｡
因此, 我现在就把它建立在这里｡
这很有趣, 也很简单｡
就像多米诺骨牌一样｡
第二卷积层的输入信道是第一卷积层的输出信道｡
因此, 这里的输出端32的数量与这里的输入端32的数量相同｡
这是因为在第二个卷积的输入卷积层中有32个图像｡
并且因此第二卷积被应用于该第二卷积层以返回第三卷积层｡
现在的问题是, 我们需要多少张新图片, 我们创建32张新图片｡
32实际上是卷积神经网络中非常常见的数｡
如果您看一下这些体系结构, 您会发现其中许多都有32个｡
对于内核方面, 我们需要减小内核大小, 也就是我们的特征检测器的尺寸｡
所以现在我们要从五只眼睛到四只甚至三只眼睛, 然后我们会做得更小｡
好吧, 我会的
所以我们的第二个卷积已经准备好了｡
它将32个经处理的图像作为输入, 每个经处理的图像检测原始输入图像的第一特征｡
由于特征检测器的尺寸减小, 它创建了32个新图像｡
现在让我们再进一步｡
所以我把这个复制粘贴到这里来创建第三个卷积来检测一些特征｡
输入通道也是如此｡
这里是卷积连接左边的输入图像的数量, 也就是前一个卷积连接右边的已处理图像的数量｡
所以是32个｡
因此我们在这里保留32个｡
太完美了
现在的问题是, 我们要检测多少新的图像？
我们现在要取64个输出, 处理后的图像｡
当然, 现在我们取一个较小的内核大小, 我们将取两个｡
这是一个非常经典的卷积层架构, 在图像内部进行高水平的特征检测非常高效｡
好吧, 我会的
现在我们有了三个卷积层, 感谢这里的三个卷积连接, 好了,
现在是时候得到我提醒的两个完整连接了｡
我们取这个巨大的向量, 是把所有的64次, 32乘以32, 都展平后得到的｡
再一次, 我们从这些卷积中得到的图像｡
所以我们把这些图像的所有像素都变平了, 我们可以得到一个巨大的向量, 这个向量将成为一个新的,
完全连接的神经网络的输入｡
这时候我们必须首先在这个巨大的向量和一个隐藏层之间建立完整的连接,
然后在隐藏层和输出层之间建立第二个完整的连接, 输出层由输出神经元组成, 每一个都对应于可能动作的q值｡
让我们建立这两个完整的连接｡
你知道该怎么做｡
这正是我们为自动驾驶汽车所做的｡
我们再来一次｡
首先我们取RN模块, 然后我们取线性类, 因为我们创建的全连接是线性类的一个对象.
然后在括号里, 嗯, 这是相同的第一｡
输入输入要素, 即输入要素的个数, 然后输出要素｡
那么第一个完整连接的输入特性是什么？
这将等于像素的数量, 这个巨大的矢量是在三次卷积之后,
把所有处理过的图像展平后得到的｡
那么这个数字是多少呢？
实际上, 这里面有个窍门.
这个数字其实很难弄到｡
我们实际上需要一个函数来计算这个数｡
我们没有一个变量可以得到这个数字｡
我们必须计算它｡
因此, 我们现在要做的是, 理解我们必须具备的编程思维是非常重要的｡
我试着把心态, 这是你必须思考的权利, 现在做, 以克服这一障碍｡
因为第一次你可能会说, 嘿, 我没有这个数量的神经元在扁平向量中, 我该怎么办？
我被困在这里了｡
事实上, 不是这样的, 因为你现在可以做的就是在这里输入任何一个代表这个神经元数量的名字｡
所以我称之为神经元数量｡
神经元数量｡
然后我们只需要一个函数, 返回神经元的数量, 我们要找的像素的数量｡
所以我们完全可以这么做｡
我们完全可以把这个变量｡
当然我们会得到一个警告, 因为它还不存在, 但是我们会在函数之后创建它,
我们完全可以这样做, 即使函数是在函数之后｡
这是典型的编程思维, 当你遇到这种障碍时, 你必须要有这种思维｡
你可以做一个函数来得到你缺少的东西｡
好吧, 我会的
然后输出特征, 输出特征, 这是隐藏层的神经元数量, 这一次由你决定｡
这取决于您要创建的神经网络的架构｡
所以一个好的数字将是为了小的数字｡
比如说, 40个神经元就可以了｡
我们可以试着增加它｡
如果训练不是太慢, 可以尝试增加｡
也许这会改善预测｡
但我们从40开始吧｡
也许我们以后会增加｡
好吧, 我会的
第一个完整连接到此结束｡
然后, 我们将此页复制到此处, 以进行第二次完整连接｡
这是隐藏层和输出层之间的连接｡
所以这里的内部特征变成了前一层的外部特征, 也就是40｡
所以这里我们放40｡
当然, 这是隐藏层的神经元数量,
这里的特征等于神经网络中输出神经元的数量｡
因为每个输出神经元对应一个键值, 一个键值对应一个动作, 这里输出神经元的数量,
当然就是动作的数量.
我们有一个变量, 那就是行动数量
因此我们在这里输入数字｡
行动｡
好了
恭喜你啊
我们定义了神经网络的架构｡
我们的神经网络由三个卷积层和一个隐层组成｡
所有这些都在一个大的CNN和这个｡
CNN会检测游戏中的功能, 这样AI就会知道它要做什么, 要去哪里,
需要在哪里拍摄｡
我们开始这一步｡
这是非常重要的第一步｡
现在我们要进行下一步, 当然, 就是要得到这些缺失的神经元｡
这就是为什么我们在这里有警告｡
神经元的数目未定名, 但不用担心｡
现在我们要做一个函数, 返回这个巨大向量中的神经元数目, 然后把这个数目放进一个变量,
叫做神经元数目.
我们将在下一个教程中进行此操作｡
这是我们的下一步｡
在那之前, 好好享受吧｡
一､