[英]Why does theano conv2d add empty dimension?
我在玩一些简单的Theano代码,遇到了以下问题:
import numpy
import theano
from theano import tensor
from theano.tensor.signal.conv import conv2d
m = tensor.fmatrix()
w = numpy.ones([10,1], dtype=numpy.float32)
c = conv2d(m,w)
f = theano.function([m], c)
print f(numpy.ones([100,100], dtype=numpy.float32)).shape
结果:(1、91、100)
2d输入的2d卷积的结果预期为2d,但实际上为3d。 为什么?
conv2d
的文档字符串表示conv2d
使用给定的过滤器对输入执行基本的2D卷积。 (请注意复数)
您可以通过几个过滤器,它将返回所有这些的卷积。 尝试例如
c = conv2d(m,np.array([w, w, w]))
f = theano.function([m], c)
print f(numpy.ones([100,100], dtype=numpy.float32)).shape # outputs (3, 91, 100)
因此,似乎默认情况下,如果您仅通过1个滤镜,它将添加一个简并轴(可能是因为,如果您自己不以这种方式通过滤镜,则它将在内部将该轴添加到滤镜中。换句话说,它不会保持跟踪输入形状以便返回对应的内容。看起来比其他任何选择都更像是一种设计选择。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.