根据这个paper ,输出形状为 N + H - 1
, N
是输入高度或宽度,H
是内核高度或宽度。这是卷积的明显逆过程。此 tutorial给出计算卷积输出形状的公式为(W−F+2P)/S+1
, W
- 输入大小,F
- 过滤器尺寸,P
- 填充尺寸,S
- 大步。但在 Tensorflow ,有如下测试用例:
strides = [1, 2, 2, 1]
# Input, output: [batch, height, width, depth]
x_shape = [2, 6, 4, 3]
y_shape = [2, 12, 8, 2]
# Filter: [kernel_height, kernel_width, output_depth, input_depth]
f_shape = [3, 3, 2, 3]
所以我们使用
y_shape
, f_shape
和 x_shape
,根据公式(W−F+2P)/S+1
计算填充大小 P
.来自 (12 - 3 + 2P) / 2 + 1 = 6
,我们得到 P = 0.5
, 不是整数。 Tensorflow 中的反卷积是如何工作的?
最佳答案
对于解卷积,
output_size = strides * (input_size-1) + kernel_size - 2*padding
strides, input_size, kernel_size, padding 都是整数
“有效”的填充为零
关于neural-network - 在tensorflow中使用tf.nn.conv2d_transpose获取反卷积层的输出形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35980044/