在Tensorflow-contrib中,2D convolution是根据filter_size和num_outputs定义的。你如何控制Theano的nnet.conv2d类型的num_outputs?
答案 0 :(得分:0)
简短回答:必须在运行时根据过滤器张量的形状确定。
与TF不同,Theano不会在张量中存储明确的形状信息。
在TF中,你可以这样做:
w = tf.placeholder('float32', [64,64], name='w')
在Theano中,编译时无法告诉x
是64 x 64
矩阵。你能做的最好的是:
w = T.matrix(name='w', dtype='float32')
在编译时,Theano只知道张量等级,以及哪些维度可以播放。
在运行时,张量的形状是已知的。如果图像批量是4D张量的形状[N, C, H, W]
,则过滤器的大小为[D, C, U, V]
。 num_outputs
将推断为D
。
编辑实际上您可以在filter_shape
中指定theano.tensor.nnet.conv2d
参数,但它只是提示Theano选择最佳卷积算法。仍然必须在运行时确定形状不匹配错误。