2017-02-15 88 views
0

我使用卷积层后续反褶积层像这样:卷积去卷积对给出了略有不同的维度

tf.nn.conv2d(num_outputs=1, kernel_size=[21, 11], stride=[2, 2], padding="SAME", rate=1) 

tf.nn.conv2d_transpose(num_outputs=1, kernel_size=[21, 11], stride=[2, 2], padding="SAME") 

我的想法是让初始图像小,那么它带来的原始大小解卷积。我实际上使用tf.slim函数,但参数是上面的那些。

当我看的输入和输出,我有一个小的差异:

Input shape : (16, 161, 511, 1) 
Output shape: (16, 162, 512, 1) 

我认为这可能是由于我的步幅大小或内核的大小。我试过多个值,但似乎没有重现原始尺寸。

+0

当将图像备份时,您必须使用整数倍数,因此您无法准确选择输出图像大小。 – drpng

+0

解决这个问题的唯一方法就是将输出裁剪为输入大小,没有太大的损失,但我希望有其他方法。 – Qubix

回答

0

一种流行的方法是填充输入图像,使得卷积和反卷积之后的输出与填充后的输入具有相同的大小。然后裁剪输出以适应没有填充的原始输入。