繁体   English   中英

为什么theano conv2d添加空尺寸?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM