语境:
我正在尝试复制 Hinton 的“带有 EM 路由的矩阵胶囊”(https://openreview.net/forum?id=HJWLfGWRb)。
在某些时候,会执行卷积操作(在某种意义上,输出张量连接到输入张量,并且输出张量中的每个元素仅受包含在大小为 K 的 2D 掩码中的输入元素的影响)。
x
形状的输入
张量w_in,w_in
where
w_in=14
中间张量映射到x_mapped
形状的输入
张量,w_out,w_out,K,K
其中
K=3
是卷积核大小w_out=6
,由卷积产生stride=2
对维度 2 和 3(均为 size K
)求和意味着对连接到输出元素的输入元素求和,该输出元素的位置由维度 0 和 1 给出。
问题:
如何x_mapped
根据输入张量中的位置有效地将 中的(1)组元素归一化x
?
例如:
x_mapped(0,0,2,2)
x_mapped(1,0,0,2)
x_mapped(0,1,2,0)
x_mapped(1,1,0,0)
都连接到x(2,2)
(公式为i_out*stride + K_index = i_in
)。因此,我希望这 4 个元素的总和为 1。
我想对所有x_mapped
“连接”到x
.
我可以通过以下方式弄清楚如何做到这一点:
- 构建以输入位置为键、输出元素列表为值的字典
- 在字典上循环,对给定输入位置的列表中的元素求和,然后除以该总和
但这对我来说似乎真的效率低下。