Hello,
Thank you for your excellent work on CUSP. I am currently implementing the pooling module described in Eq. (6)–(8) and I have a question regarding the filter-level aggregation step.
In my implementation, after the component-level attention fusion, each filter produces an embedding ζ^(l), which is still represented on the product manifold (each component lies on its corresponding stereographic manifold). Then the paper defines the final embedding as
ζ = sum_{l=1}^L ε_l ζ^(l)
which I implemented as
zeta_l_tensor = torch.stack(zeta_l_list, dim=0) # (L, N, D)
epsilon = softmax(self.epsilon)
zeta = torch.sum(epsilon.view(L,1,1) * zeta_l_tensor, dim=0)
However, this operation is a standard Euclidean weighted sum, while ζ^(l) are still manifold-valued embeddings.
So this seems to perform linear combination directly in the ambient space rather than on the manifold.
My question is:
Should the filter-level aggregation be done in the tangent space (e.g., using logmap0 before summation and optionally expmap0 after), or is it intended that ζ^(l) are already treated as Euclidean features at this stage?
Hello,
Thank you for your excellent work on CUSP. I am currently implementing the pooling module described in Eq. (6)–(8) and I have a question regarding the filter-level aggregation step.
In my implementation, after the component-level attention fusion, each filter produces an embedding ζ^(l), which is still represented on the product manifold (each component lies on its corresponding stereographic manifold). Then the paper defines the final embedding as
which I implemented as
However, this operation is a standard Euclidean weighted sum, while ζ^(l) are still manifold-valued embeddings.
So this seems to perform linear combination directly in the ambient space rather than on the manifold.
My question is:
Should the filter-level aggregation be done in the tangent space (e.g., using logmap0 before summation and optionally expmap0 after), or is it intended that ζ^(l) are already treated as Euclidean features at this stage?