问题介绍
以tf.Variable(tf.constant([-1,0,0,-1,-1,0,0,-1],shape=(2,2,1,2)))
生成卷积核时期待的结果为
[
[
−
1
,
0
]
,
[
−
1
,
0
]
]
[[-1,0],[-1,0]]
[[−1,0],[−1,0]]
[
[
0
,
−
1
]
,
[
0
,
−
1
]
]
[[0,-1],[0,-1]]
[[0,−1],[0,−1]]
但是该
V
a
r
i
a
b
l
e
Variable
Variable的属性
a
r
r
r
y
arrry
arrry所展示的效果为
[
[
[
[
−
1
,
0
]
]
,
[
[
0
,
−
1
]
]
]
,
[
[
[
−
1
,
0
]
]
,
[
[
0
,
−
1
]
]
]
]
[[[[-1,0]],[[0,-1]]],[[[-1,0]],[[0,-1]]]]
[[[[−1,0]],[[0,−1]]],[[[−1,0]],[[0,−1]]]]
虽然结果也能按所想成功运行,但是对于
c
o
n
v
2
d
conv2d
conv2d函数处理filter的机制产生了疑惑。
解释
生成多通道的输出是按列取值的,即将这个
2
∗
2
∗
1
∗
2
2*2*1*2
2∗2∗1∗2的shape排列好,分成两个
2
∗
2
∗
1
∗
1
2*2*1*1
2∗2∗1∗1,各取一列,组合而成卷积核。
如图所示