如何在conv2d中添加特定的填充

2024-05-28 20:50:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用python把一个张量传递给CNN。我正在使用tf.layers.conv2d为了这个。我想把输出尺寸作为输入的一半。我知道我可以使用'same'的填充,然后使用max pooling层来实现这一点,但是我在最近的一篇论文中发现的另一种方法是使用3x3内核,其步长为2x2,此外还有一个1x1的填充

现在,据我所知,conv2d允许一个名为padding的参数,它可以是“valid”或“same”,它不允许使用特定长度的padding。在

有什么办法可以直接在手术中实现吗?我问,因为这个想法是使用多个卷积层,每个层数依次将长度和宽度减半。在

如果有人能指出一个类似的主题或帮助,这将是伟大的。在

编辑:

我被要求加入代码。但是没有太多的代码,因为我被困在CNN需要设计的第一个点上。尽管如此,以下是接受初始输入并开始定义CNN的部分(在这里,我一直保持padding='same',因为我在检查这是否可行):

def conv2d(z):
    output = tf.layers.conv2d(z,strides=[2,2],filters=3,padding='same',kernel_size=3);

我在这一点上卡住了,因为任何进一步的工作都需要这个初始层被正确地定义,因为连续的层也将在相同的原则下工作。在

初始图像大小为2241灰度图像


Tags: 方法代码图像定义尺寸layerstf内核
1条回答
网友
1楼 · 发布于 2024-05-28 20:50:53

所以,我找到了答案。 在tensorflow中有一个内置函数pad,可以用来求解它。 我要做的就是这样

output = tf.pad(output, paddings, "CONSTANT")
output = tf.layers.conv2d(output,strides=[2,2],kernel_size=3,filters=3)

这意味着我正在使用tf.垫在变量“paddings”定义如下的每一层之前

^{pr2}$

这确保了每一层在被传递到卷积之前被填充,从而根据需要给出输出

相关问题 更多 >

    热门问题