在 Keras 中实现模型。如何解释填充/步幅值?
Posted
技术标签:
【中文标题】在 Keras 中实现模型。如何解释填充/步幅值?【英文标题】:Implementing a model in Keras. How to interpret padding/stride values? 【发布时间】:2021-12-18 06:46:04 【问题描述】:我正在尝试从图像中实现模型。
除了步幅/填充符号之外,一切都很清楚。
我不知道如何从 Keras 中的例如 1/2 解释/编码 Stride/Padding。
【问题讨论】:
【参考方案1】:您可以直接将 stride 参数传递给 keras 层。 (1,1)
的步幅相当于没有步幅。对于大小为 5x5 的内核,填充 (2,2) 意味着输出图像具有与输入图像相同的尺寸。 Keras 的方式是要求填充 = "same"
步幅是在输入图像中应用卷积核时在水平和垂直方向上跳过多少像素。
填充是在通过 2D 卷积过滤时应如何复制边界图像像素(如果需要)以保持原始输入尺寸。当应用于图像边框时,3x3 内核将丢失居中内核周围的像素。添加填充确保丢失的像素是从现有像素创建的(通过复制边框像素值)。如果不是,则内核不会应用于边界像素,因此输出图像的尺寸会减小(3x3 内核的每个边界丢失 1 个像素,5x5 内核丢失 2 个像素) 例如:
conv1 = Conv2D(20, (5, 5), activation='relu',padding = 'same',strides = (1,1))
【讨论】:
以上是关于在 Keras 中实现模型。如何解释填充/步幅值?的主要内容,如果未能解决你的问题,请参考以下文章
keras.layers.Conv2D的默认内核大小,零填充和步幅是什么?
如何在 Keras 模型中实现一些可训练的参数,例如 Pytorch 中的 nn.Parameters()?