Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在conv2d中添加特定填充_Python_Tensorflow_Anaconda_Padding_Convolution - Fatal编程技术网

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

Python 如何在conv2d中添加特定填充,python,tensorflow,anaconda,padding,convolution,Python,Tensorflow,Anaconda,Padding,Convolution,我试图用python向CNN传递一个张量。我正在为此使用tf.layers.conv2d。我想把输出维度作为输入的一半。我知道我可以使用一个“相同”的填充和一个最大池层来实现这一点,但我在最近的一篇论文中发现的另一种方法是,除了使用1x1填充之外,还使用一个3x3内核和2x2跨步 现在,据我所知,conv2d允许一个名为padding的参数,该参数可以是“有效”或“相同”,它不允许特定长度的padding 是否有任何方法可以直接在操作中实现这一点?我在问,因为这个想法是使用多个卷积层,每个卷积层

我试图用python向CNN传递一个张量。我正在为此使用tf.layers.conv2d。我想把输出维度作为输入的一半。我知道我可以使用一个“相同”的填充和一个最大池层来实现这一点,但我在最近的一篇论文中发现的另一种方法是,除了使用1x1填充之外,还使用一个3x3内核和2x2跨步

现在,据我所知,conv2d允许一个名为padding的参数,该参数可以是“有效”或“相同”,它不允许特定长度的padding

是否有任何方法可以直接在操作中实现这一点?我在问,因为这个想法是使用多个卷积层,每个卷积层在长度和宽度上连续地将维度减半

如果有人能指出一个类似的话题或在这方面提供帮助,那就太好了

编辑:

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

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


另外,我的初始输入大小是一个224x224图像,带有一个通道(灰度图像)

因此,我找到了一个答案。 tensorflow中有一个名为pad的内置函数,可以用来求解它。 我正在做的就是这个

output = tf.pad(output, paddings, "CONSTANT")
output = tf.layers.conv2d(output,strides=[2,2],kernel_size=3,filters=3)
这意味着我在变量“paddings”定义如下的每一层之前使用tf.pad

paddings=tf.constant([[0,0], [1,1],[1,1],[0,0]])

这样可以确保在传递进行卷积之前对每一层进行填充,从而提供所需的输出

请包含您的代码。卷积的维度是什么?
paddings=tf.constant([[0,0], [1,1],[1,1],[0,0]])