大家好, 欢迎学习本Python教程｡
所以下一步就是让这些神经元发挥作用, 这将给予我们带来我们想要的｡
这是在这个巨大的向量中的神经元数量, 在卷积之后｡
这是我们现在唯一缺少的信息, 我们将通过函数得到它｡
让我们把这个函数｡
我们称之为计数, 简单地用下划线标出神经元｡
这算什么？
神经元的功能会以什么作为参数呢？
好吧, 它会取物体本身, 但它会取其他东西,
因为展平层中输出神经元的数量实际上只取决于一件事｡
它取决于原始输入图像的维度, 即神经网络最开始的维度｡
所以我们现在唯一需要的论据就是这些尺寸, 输入图像的尺寸｡
因此, 让我们给予这个表示输入图像尺寸的参数命名, 我们将它命名为image
dim｡
好吧, 我会的
我现在可以告诉你, 来自末日的输入图像的实际尺寸将是80 × 80｡
我们要把原始图像的大小缩小到80乘80, 这就是进入神经网络的图像格式｡
因此, 图像STEM实际上将为188, 这与我们处理白色图像的事实相对应,
即只有一个通道｡
所以把它们映射成元组1, 80和80｡
好吧, 我会的
所以这是我们唯一需要的论据｡
现在让我们来数一下神经元｡
那我们要怎么做呢？
首先, 我们现在没有任何输入损伤｡
我们没有任何可以导入的末日图像｡
我们稍后再做｡
所以我们要做的第一件事是创建一个假图像, 但它的维数是80｡
到了80, 我们会用假像素来创建假图像,
而这最终还是给予我们想要的数字, 因为这个数字只取决于尺寸, 而不是图像内部的像素｡
我们先创建一个假的图像然后计算出我们需要的神经元的数量.
创建假图像的技巧是, 首先我们将其命名为X, 然后我们将使用渲染的火炬,
因为, 你知道, 我们将在图像中放置一些随机像素,
因为我们使用火炬中的随机函数, 即run函数｡
然后在里面我们要输入, 如你所见, 图像的尺寸是188｡
但是因为我们要把这个图像输入到神经网络中, 你们还记得, 神经网络只能接受一批批的输入状态,
一批批的输入图像｡
我们将创建一个伪维度, 可以直接在run函数中创建｡
实际上,
我们只需要从与批次对应的一个开始, 然后我们可以将其放入与输入图像的尺寸对应的Apple 188｡
正如你们所理解的, 这些维度包含在这个image dim参数中,
它代表了表188, 所以, 现在我们只需要添加image dim, 但是为了传递temple的元素, 因为现在image
them是一个元组, 作为一个函数的参数列表, 我们需要在image them之前, 也就是在表之前,
添加｡
一种存储, 该存储将允许将图像模糊元组的元素作为函数的参数列表传递｡
正如你所看到的, 这正是这里所指定的, 星星和维度｡
好吧, 我会的
这样就产生了一个假像素的图像｡
所以这和末日影像无关｡
但同样, 我们仍然能够得到神经元的最终数量｡
现在我们需要记住的最后一件事是, 把这个输入批处理向量转换成火炬变量,
因为这将进入神经网络｡
好吧, 我会的
这代表了一个由随机像素组成的输入图像, 它刚刚被转换成了一个torch变量｡
现在我们将把它引入到神经网络中, 更具体地说, 神经网络的卷积层｡
因为我们只需要卷积后的神经元数目, 我们只需要卷积3｡
在第三个卷积层之后, 我们就不讨论到全连接了｡
这是因为我们需要的神经元数量介于卷积3和FC 1之间｡
好吧, 我会的
现在, 我们有了一个具有正确维度的输入图像, 那么, 是时候将该图像传播到神经网络中,
以到达展平层｡
然后我们将得到扁平层中的神经元, 我们将得到我们想要的信息｡
这是这个扁平层中神经元的数量｡
所以现在我们要做的就是我们在forward函数中所做的｡
我们需要将信号传播到神经网络中, 但只在卷积层中传播, 直到到达展平层｡
所以我们开始吧｡
我们将更新x｡
现在, x是输入图像, 并且对于第二个x, 这里x将完全变成第一卷积层｡
现在我们要做的是一个三步的过程｡
第一步, 我们将卷积应用于输入图像｡
然后第二步, 我们对获得的卷积图像进行最大修剪｡
然后第三步我们激活这些聚集在一起的卷曲图像中的神经元｡
所以X将成为第一个卷积层, 由所有这些池, 卷积图像组成｡
我们来做第一步, 对输入图像进行第一次卷积｡
所以我们要做的就是取卷积1自点卷积1｡
我们走吧｡
我们将其应用于到目前为止由X表示的输入图像｡
这是第一步｡
第一步完成｡
现在第二步, 我们将把最大池应用到由卷积一个X返回卷积图像上, 并应用最大池
我们要从函数模块中取一个函数, 所以我们取F, 快捷方式, 然后点,
然后我们要用函数max pool到D, 就是我们把自卷积1, X, 放在max
pool的括号中定义的｡
因为我们对卷积图像应用了最大合并｡
但是这个最大池函数需要额外的参数, 首先是内核大小｡
同样, 这是在图像中滑动的窗口的大小, 它将占用每张幻灯片中的最大像素｡
这仍然可以检测到这些特征, 因为这些特征与数组中像素的高值相关联, 就像你在直觉课上看到的那样｡
我们需要输入的第一个参数是内核大小, 我们取3｡
这是内核大小的常见选择｡
然后我们需要输入步幅, 即它在图像中滑动的像素数, 我们将步幅设为2｡
同样, 这是一个常见的选择｡
好了, 我们走吧｡
现在第二步完成了｡
现在让我们进入第三步, 激活第一层卷积图像中的所有神经元｡
我们再做一次, 我们要对所有这些应用一个函数｡
这里我再次取F, 因为我们要取另一个函数,
你们可能已经猜到了, 它是一个激活函数, 但它通常是一个整流激活函数｡
也许你还记得它的名字叫Réélu｡
我们走吧｡
就是这个｡
所以我们把值应用到我们的集合卷积图像上｡
这就是全部｡
好吧, 我会的
就是这样｡
三个步骤完成｡
这是非常快的｡
请记住, 我们必须首先对输入图像应用卷积,
然后对通过卷积获得的卷积图像应用最大池｡
然后我们用整流器激活函数激活所有这些卷积层中的神经元｡
太完美了｡
我们得到了第一个卷积层, 在这个卷积层上应用了最大池, 并且现在激活了神经元｡
所以基本上它所做的就是把信号从第一个卷积层传播到下一个卷积层｡
说到下一个, 这正是我们现在要处理的｡
我们要做的事情和我们刚才在第一卷积层上做的一样,
到第二卷积层, 通过激活第二卷积层的神经元, 再次将信号进一步传播到神经网络｡
但在此之前, 我们需要得到这个卷积层｡
所以我们要对x进行卷积｡
这是第一个卷积层, 我们将对X进行卷积,
得到第二个卷积层, 然后我们将对其进行最大拉伸, 最后激活它的神经元｡
所以我们开始吧｡
其实很简单｡
我们只需要复制并粘贴到下面｡
当然, 现在我们需要用卷积二来代替卷积一｡
好了
已经准备好了｡
C很容易｡
现在, 通过这条线路, 我们将信号从第二个卷积层传播到下一个卷积层,
也就是第三个卷积层｡
为了得到第三个卷积层, 我们需要再次应用它｡
所以我把它复制粘贴到下面, 用卷积三代替卷积二｡
就这样了｡
是不是太实用了？
我们在三个卷积层和一个闪光灯中传播信号, 这要归功于这个令人敬畏的结构｡
好吧, 我会的
太完美了｡
现在, 信号向上传播到第三个卷积层, 说到之后, 这会引导我们找到我们要找的,
我们感兴趣的｡
这就是展平层｡
好吧, 我会的
现在我们有了第三个卷积层, 也就是最后一个X, 现在是时候得到平坦层了｡
这正是我们现在要做的｡
我们要把第三个卷积层的所有像素都变平｡
也就是说, 我们要取第三卷积层所有通道的所有像素｡
我们要把它们一个接一个地放到一个巨大的向量中｡
当然, 这个巨大的矢量就是展平层｡
同时, 我们会用一个技巧来得到这个扁平层中的神经元数量｡
这正是我们要找的｡
这就是我们缺失的神经元数量｡
因此, 让我们直接返回我们想要的｡
在这个过程中, 我们要把第三个卷积层变平, 同时,
在这个变平层中的神经元数量｡
我们取X, 这是第三个卷积层｡
我们将取第三卷积层的所有通道,
我们将使用一个函数, 即大小函数, 将所有这些通道的所有像素展平到一个相同的巨大矢量中｡
你可以在PyTorch教程中找到诀窍｡
首先我们取X的数据, 因为X是一个特殊的结构, 它是一个火炬变量｡
所以它的结构相当复杂｡
但首先我们需要访问这里的数据, 然后我们需要查看它里面的内容｡
所以我们使用这个视图函数, 现在我们需要访问我们要找的东西,
这是用参数1和-1给出的｡
你不需要了解这个结构里面有什么, 但你可以理解这就是我们要得到这个数量的神经元的方法｡
最后, 我们需要添加size, 然后是括号, 在里面输入1｡
所以基本上我们在这里所做的, 我们所做的是我们把所有通道的所有像素, 一个接一个地放在这个巨大的向量中,
这将是全连接网络的输入｡
这基本上就是一号的作用｡
有了这个, 我们就可以得到我们要找的神经元的数量｡
好吧, 我会的
所以现在我们得到我们想要的了｡
最后, 我们可以用这个函数返回的值来代替神经元的数目, 当这个函数应用于末日图像的格式时, 也就是1 *
80 * 80｡
所以我们现在要做的就是用计数神经元来代替数字神经元｡
我们应用于缩放图像格式的函数, 该缩放图像将是元组｡
80岁和80岁｡
好了
当然, 我们不会忘记self, 因为count neuron实际上是CNN类的一个方法｡
所以我们需要添加自我, 现在警告应该消失了｡
好了
现在一切都好了｡
我们得到了神经网络的结构, 没有任何遗漏｡
我们有这个计数｡
如果你想尝试其他架构, 而不想手动计算神经元的数量, 那么神经元就可以发挥作用｡
你只要使用这个函数, 你把它应用到你的图像格式, 这将直接得到你想要的｡
这是洪泛层中的神经元数量, 而不需要做任何事情, 也不管架构是什么｡
所以这很酷｡
现在我们已经完成了我们正在制造的大脑的第一个重要步骤｡
我们还有最后一步, 也就是最后一个函数要做, 它是主要的正向函数｡
所以我们要把信号从大脑开始传播, 也就是从人工智能的眼睛传播到输出层｡
那是在第二次完全连接之后｡
我们将在下一个教程中进行此操作｡
在那之前, 好好享受我｡