Python 如何在conv2d中添加特定填充
我试图用python向CNN传递一个张量。我正在为此使用tf.layers.conv2d。我想把输出维度作为输入的一半。我知道我可以使用一个“相同”的填充和一个最大池层来实现这一点,但我在最近的一篇论文中发现的另一种方法是,除了使用1x1填充之外,还使用一个3x3内核和2x2跨步 现在,据我所知,conv2d允许一个名为padding的参数,该参数可以是“有效”或“相同”,它不允许特定长度的padding 是否有任何方法可以直接在操作中实现这一点?我在问,因为这个想法是使用多个卷积层,每个卷积层在长度和宽度上连续地将维度减半 如果有人能指出一个类似的话题或在这方面提供帮助,那就太好了 编辑: 我被要求加入代码。但是没有太多的代码,因为我被困在CNN需要设计的第一点。尽管如此,下面是接受初始输入并开始定义CNN的部分(在这里,我一直在填充class='same',因为我正在检查这是否可行): 我被困在这一点上,因为任何进一步的工作都需要正确定义这个初始层,因为连续层也将根据相同的原则工作Python 如何在conv2d中添加特定填充,python,tensorflow,anaconda,padding,convolution,Python,Tensorflow,Anaconda,Padding,Convolution,我试图用python向CNN传递一个张量。我正在为此使用tf.layers.conv2d。我想把输出维度作为输入的一半。我知道我可以使用一个“相同”的填充和一个最大池层来实现这一点,但我在最近的一篇论文中发现的另一种方法是,除了使用1x1填充之外,还使用一个3x3内核和2x2跨步 现在,据我所知,conv2d允许一个名为padding的参数,该参数可以是“有效”或“相同”,它不允许特定长度的padding 是否有任何方法可以直接在操作中实现这一点?我在问,因为这个想法是使用多个卷积层,每个卷积层
另外,我的初始输入大小是一个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]])