空间可分卷积

时间:2016-08-02 14:48:48

标签: tensorflow

如何在Tensorflow中有效地实现1x1卷积,该卷积在空间维度上具有单独的文件管理器?有一个tf.nn.depthwise_conv2d与我的问题类似,但它在深度(即第三维)上有单独的过滤器。

在最简单的情况下,out_channels = 1这个卷积可以写成:

def spatial_conv(input, filter):
  return tf.reduce_sum(tf.mul(input, filter), [3], keep_dims=True)

其中input.dim=[batch_size, input_width, input_height, channels]filter.dim=[input_width, input_height, channels]。我想通过连接相同输入和不同(但形状相同的)滤波器的输出来推广这种卷积。

1 个答案:

答案 0 :(得分:0)

我猜你在火炬中寻找像https://github.com/torch/nn/blob/master/doc/convolution.md#nn.SpatialConvolutionLocal这样的东西。但是,请记住,目前CUDA(cunn模块)实现有一些可怕的错误,这使得CUDA性能甚至比CPU差。