Python 如何在keras conv层中进行零填充?

Python 如何在keras conv层中进行零填充?,python,machine-learning,keras,padding,conv-neural-network,Python,Machine Learning,Keras,Padding,Conv Neural Network,我试图实现科学文章中的模型,该文章说他们使用零填充。是否可以在中配置此填充 我看到的填充的唯一可能值是 填充:“有效”或“相同”(不区分大小写)之一 可以用零或其他常量值填充吗?“相同”表示零填充。目前无法有效地使用其他常量填充。查看函数。它用零填充张量 使用padding='valid'时,没有填充 当您将padding='same'与strips=1一起使用时,输入为零填充,以便输出的宽度和高度与输入相同。如文档中所述,“相同”在具有步幅的后端之间稍微不一致一, 如果要手动设置填充值,最简单

我试图实现科学文章中的模型,该文章说他们使用零填充。是否可以在中配置此填充

我看到的填充的唯一可能值是

填充:“有效”或“相同”(不区分大小写)之一


可以用零或其他常量值填充吗?

“相同”表示零填充。目前无法有效地使用其他常量填充。

查看函数。它用零填充张量

使用
padding='valid'
时,没有填充


当您将
padding='same'
strips=1
一起使用时,输入为零填充,以便输出的宽度和高度与输入相同。如文档中所述,“相同”在具有
步幅的后端之间稍微不一致一,

如果要手动设置填充值,最简单的方法可能是在
Conv2D
之前添加一个层

例如,
ZeroPadding2D(padding=((1,2),(3,4))
将在左侧添加1个维度,在右侧添加2个维度,在顶部添加3个维度,在底部添加4个维度<代码>零填充2D(5)
将在所有4个边框上添加5个维度


(顺便说一句,这是一个后端函数的包装层
空间填充

我认为填充class='same'意味着,如果我们在一个隐藏层中,跨步查找到的空单元格将填充上一层的值,而不是零,只有当是输入层时才会填充零。

ZeroPadding2D=>

keras.layers.ZeroPadding2D(padding=(1,1),数据格式=无) 二维输入(如图片)的零填充层

该层可以在图像张量的顶部、底部、左侧和右侧添加零的行和列

论据

填充:int,或2个int的元组,或2个int的2个元组的元组。 If int:对高度和宽度应用相同的对称填充。 如果两个整数的元组:解释为高度和宽度的两个不同对称填充值:(对称\u高度\u填充,对称\u宽度\u填充)。 如果两个整数的两个元组的元组:解释为((上下垫),(左垫,右垫))


数据\u格式:一个字符串,“通道\u最后一个”或“通道\u第一个”中的一个。输入中尺寸的顺序。“channels_last”对应具有形状的输入(批次、高度、宽度、通道),而“channels_first”对应具有形状的输入(批次、通道、高度、宽度)。它默认为Keras配置文件~/.Keras/Keras.json中的image_data_格式值。如果你从未设置过,那么它将是“最后一个频道”

你怎么知道?更可能的情况是“相同”意味着用相同的值填充,不是吗?单词“相同”指的是结果的形状,而不是它的值。也就是说,返回的张量具有与输入相同的形状。似乎“相同”的工作方式与对前面的ZeroPadding2D层使用“有效”时的工作方式不同。请检查我的实验:确实如此。这对于需要非标准填充的情况非常理想。卷积层具有
padding='same'
选项,该选项将自动用零填充,以保持与输入相同的形状。但是,如果您想要的不是卷积层本身提供的功能,或者在其他情况下,这是正确的功能。用法示例?下面是对keras填充层的更详细解释