我正在尝试制作一个卷积网络,接受任何大小的灰度图像:
inputs = tf.placeholder(tf.float32, [None, None, None, 1])
最后一个卷积层的输出具有[None,None,None,512]形状,其中512是通道数。到目前为止一切都很棒。问题是,我需要折叠第二维和第三维,所以我需要重塑。但我不知道图形构建时的第二维和第三维,所以我这样做:
dims = tf.shape(output)
output = tf.reshape(output, [-1, dims[1] * dims[2], 512])
我希望最终的形状是[?,?,512],但它是[?,?,?]。我需要在代码中稍后知道构建时的最后一个维度,那么有没有办法以保留最后一维的大小的方式重塑输出张量? 谢谢。
答案 0 :(得分:3)
对于TensorFlow的静态形状推断,这是一个棘手的情况,因为它依赖于传播有关部分已知值的信息。我们在版本0.10中添加了对此案例的支持(以及一些将张量视为形状的类似案例)。