对于Theano来说num_outputs tensorflow.contrib.layers.convolution2



在Tensorflow-contrib中,2D卷积是根据filter_size和num_outputs定义的。你如何控制Theano的nnet.conv2d类型的num_outputs?

简短的回答:它必须在运行时根据过滤器张量的形状确定。


与TF不同,Theano不会在张量中存储显式的形状信息。

在 TF 中,您可以执行以下操作:

w = tf.placeholder('float32', [64,64], name='w')

在 Theano 中,无法在编译时判断x是一个64 x 64矩阵。你能做的最好的事情就是:

w = T.matrix(name='w', dtype='float32')

在编译时,Theano只知道张量秩,以及哪些维度是可广播的。

在运行时,张量的形状是已知的。如果图像批处理是形状[N, C, H, W]的 4D 张量,而过滤器的大小为[D, C, U, V]num_outputs将推断为D.


编辑实际上你可以在theano.tensor.nnet.conv2d中指定filter_shape参数,但它只是为Theano选择卷积的最佳算法提供了一个提示。形状不匹配错误仍必须在运行时确定。

相关内容

最新更新