朝阳网站建设开发,用上网做任务的网站,做网站开店,w网站制作和推广在使用卷积网络#xff08;CNN#xff09;时#xff0c;一个步骤是计算经过卷积和池化步骤后的输出大小#xff0c;以便我们可以将输出连接到一个完全收集的线性层。
以Pytorch中的一维CNN为例#xff0c; self.conv1 nn.Conv1d(in_channels1, out_channels64, kernel_s…在使用卷积网络CNN时一个步骤是计算经过卷积和池化步骤后的输出大小以便我们可以将输出连接到一个完全收集的线性层。
以Pytorch中的一维CNN为例 self.conv1 nn.Conv1d(in_channels1, out_channels64, kernel_size3, padding1)重要的参数包括input_channels这里我们设置为1但它可以根据你拥有的特征数量而多于1。在二维图像案例中输入通道可以是RGB在一维数据案例中可以是时间序列问题中的多个传感器测量值。output_channels由我们在卷积中使用的滤波器数量决定在我们的例子中我们将其设置为64意味着我们正在使用64个滤波器。kernel_size是我们使用的卷积滤波器的大小。padding用于调整空间分辨率。
所以这个一维卷积模块的总输出大小等于out_channels乘以每个滤波器的输出大小。计算每个滤波器确切输出大小的公式是 从公式中我们可以看到它受到许多因素的影响包括每个通道在我们的例子中是1个通道的序列输入大小、核心大小、填充大小和步长大小通常设置为1。
卷积层中的填充
填充指的是在执行卷积操作之前向输入数据添加额外元素通常是零。 这样做是为了控制卷积层输出的大小。
填充的效果
填充的主要目的是允许控制输出张量的空间维度在本例中为长度。 通过填充你可以保持输入的大小增加它或控制它减少的量。 特别是填充可以用来确保层的输出大小与输入大小相同这在许多CNN架构中很常见以保持输入通过网络层的空间分辨率。
填充值为1
填充值为1意味着在输入的每一侧添加一个填充元素。 在一维卷积的背景下这会在输入序列的开始和结束添加一个零值元素。 例如如果你的输入序列是[a, b, c, d]在padding1的情况下它在卷积操作应用之前实际上变成了[0, a, b, c, d, 0]。
对输出大小的影响 当核心大小为3且填充为1如你的例子所示时卷积层将产生一个与输入长度相同的输出。这是因为填充补偿了由于卷积操作而可能发生的尺寸减少。
使用上述公式我们可以获得每个输入序列的输出大小。在我们的例子中由于核心大小为3将填充设置为1将使每个输入序列的输出大小与输入大小相同很简单。在Pytorch中我们也可以设置padding‘same’它会自动调整填充大小以确保每个输入序列的输出大小与输入大小相同。
在卷积步骤之后然后是池化步骤它可以是
self.pool nn.MaxPool1d(kernel_size 2)在这个例子中我们基本上将卷积的输出大小减半。所以最终每个输入序列将变成输入大小的一半。
现在要获得上述两个步骤的总输出大小我们需要乘以我们使用的滤波器数量。在我们的例子中我们使用了64个滤波器所以最终的输出大小应该是
64* (input_size//2 )这个大小就是我们应该用来设置后续步骤中完全连接层的输入大小。
阅读原文
英文
AI好书推荐
AI日新月异再不学来不及了。但是万丈高楼拔地起离不开良好的基础。您是否有兴趣了解人工智能的原理和实践 不要再观望 我们关于 AI 原则和实践的书是任何想要深入了解 AI 世界的人的完美资源。 由该领域的领先专家撰写这本综合指南涵盖了从机器学习的基础知识到构建智能系统的高级技术的所有内容。 无论您是初学者还是经验丰富的 AI 从业者本书都能满足您的需求。 那为什么还要等呢
人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典
北大出版社人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理