如何在keras conv层中进行零填充?
How to do zero padding in keras conv layer?
我正在尝试从科学文章中实现模型,该文章说他们正在使用零填充。是否可以在 keras Conv2D 中配置此填充?
我看到的填充的唯一可能值是
padding: one of "valid" or "same" (case-insensitive).
是否可以用零或其他常数值填充?
"same" 表示零填充。目前无法以有效的方式填充其他常量。
看看 spatial_2d_padding
函数。它用零填充张量。
当您使用 padding='valid'
时,没有填充。
当您将 padding='same'
与 strides=1
一起使用时,输入会被零填充,以便输出的宽度和高度与输入相同。如文档中所述,"same" 在后端与 strides
!= 1.
略有不一致
如果你想手动设置填充值,也许最简单的方法是在Conv2D
之前添加一个ZeroPadding2D
层。
例如,ZeroPadding2D(padding=((1,2),(3,4)))
将在左侧添加 1 个维度,在右侧添加 2 个维度,在顶部添加 3 个维度,在底部添加 4 个维度。 ZeroPadding2D(5)
将在所有 4 个边框上添加 5 个维度。
(顺便说一句,它是后端函数的包装层spatial_2d_padding
)
我认为 padding='same' 意味着如果我们在隐藏层中,步长找到的空单元格将被前一层的值填充而不是零,前提是输入图层将用零填充。
https://keras.io/layers/convolutional/
ZeroPadding2D=>
keras.layers.ZeroPadding2D(填充=(1, 1), data_format=None)
2D 输入(例如图片)的零填充层。
该层可以在图像张量的顶部、底部、左侧和右侧添加零行和列。
参数
填充:整数,或 2 个整数的元组,或 2 个 2 个整数的元组的元组。
如果为 int:相同的对称填充应用于高度和宽度。
如果 2 个整数的元组:解释为高度和宽度的两个不同的对称填充值:(symmetric_height_pad, symmetric_width_pad)。
如果 2 个整数的 2 个元组的元组:解释为 ((top_pad, bottom_pad), (left_pad, right_pad))
data_format:字符串,"channels_last"或"channels_first"之一。输入中维度的排序。 "channels_last" 对应于具有形状(批次、高度、宽度、通道)的输入,而 "channels_first" 对应于具有形状(批次、通道、高度、宽度)的输入。它默认为位于 ~/.keras/keras.json 的 Keras 配置文件中找到的 image_data_format 值。如果您从未设置它,那么它将是 "channels_last".
我正在尝试从科学文章中实现模型,该文章说他们正在使用零填充。是否可以在 keras Conv2D 中配置此填充?
我看到的填充的唯一可能值是
padding: one of "valid" or "same" (case-insensitive).
是否可以用零或其他常数值填充?
"same" 表示零填充。目前无法以有效的方式填充其他常量。
看看 spatial_2d_padding
函数。它用零填充张量。
当您使用 padding='valid'
时,没有填充。
当您将 padding='same'
与 strides=1
一起使用时,输入会被零填充,以便输出的宽度和高度与输入相同。如文档中所述,"same" 在后端与 strides
!= 1.
如果你想手动设置填充值,也许最简单的方法是在Conv2D
之前添加一个ZeroPadding2D
层。
例如,ZeroPadding2D(padding=((1,2),(3,4)))
将在左侧添加 1 个维度,在右侧添加 2 个维度,在顶部添加 3 个维度,在底部添加 4 个维度。 ZeroPadding2D(5)
将在所有 4 个边框上添加 5 个维度。
(顺便说一句,它是后端函数的包装层spatial_2d_padding
)
我认为 padding='same' 意味着如果我们在隐藏层中,步长找到的空单元格将被前一层的值填充而不是零,前提是输入图层将用零填充。
https://keras.io/layers/convolutional/
ZeroPadding2D=>
keras.layers.ZeroPadding2D(填充=(1, 1), data_format=None) 2D 输入(例如图片)的零填充层。
该层可以在图像张量的顶部、底部、左侧和右侧添加零行和列。
参数
填充:整数,或 2 个整数的元组,或 2 个 2 个整数的元组的元组。 如果为 int:相同的对称填充应用于高度和宽度。 如果 2 个整数的元组:解释为高度和宽度的两个不同的对称填充值:(symmetric_height_pad, symmetric_width_pad)。 如果 2 个整数的 2 个元组的元组:解释为 ((top_pad, bottom_pad), (left_pad, right_pad))
data_format:字符串,"channels_last"或"channels_first"之一。输入中维度的排序。 "channels_last" 对应于具有形状(批次、高度、宽度、通道)的输入,而 "channels_first" 对应于具有形状(批次、通道、高度、宽度)的输入。它默认为位于 ~/.keras/keras.json 的 Keras 配置文件中找到的 image_data_format 值。如果您从未设置它,那么它将是 "channels_last".