我正在尝试从科学文章中实现模型,该文章说它们使用零填充。是否可以在keras Conv2D?
中配置此填充我看到的只有填充的可能值是
填充:"有效"之一或"相同" (不区分大小写)。
是否可以用零或其他常量值填充?
答案 0 :(得分:9)
“相同”表示零填充。目前无法以有效的方式填充其他常量。
答案 1 :(得分:3)
使用padding='valid'
时没有填充。
当将padding='same'
与strides=1
一起使用时,输入将被补零,因此输出的宽度和高度与输入相同。如文档中所述,后端strides
!= 1时,“相同”在后端有点不一致。
如果您要手动设置填充值,也许最简单的方法是在Conv2D
之前添加ZeroPadding2D
层。
例如,ZeroPadding2D(padding=((1,2),(3,4)))
将在左侧添加1个尺寸,在右侧添加2个尺寸,在顶部添加3个尺寸,在底部添加4个尺寸。 ZeroPadding2D(5)
将在所有4个边界上增加5个维度。
(顺便说一句,这是后端函数spatial_2d_padding
的包装层)
答案 2 :(得分:2)
看看spatial_2d_padding
功能。它用零填充张量。
答案 3 :(得分:0)
我认为padding ='same'的意思是,如果我们处于隐藏层中,则步长找到的空单元格将使用前一层的值填充而不是零,只有输入层将被填充零。
答案 4 :(得分:0)
https://keras.io/layers/convolutional/
ZeroPadding2D =>
keras.layers.ZeroPadding2D(padding =(1,1),data_format = None) 二维输入(例如图片)的零填充层。
此层可以在图像张量的顶部,底部,左侧和右侧添加零行和列。
参数
填充:int,或2个整数的元组,或2个int的2个元组的元组。 如果为int,则将相同的对称填充应用于高度和宽度。 如果元组为2 ints:解释为高度和宽度的两个不同的对称填充值:(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”。