Skip to content

Conversation

gausshj
Copy link
Collaborator

@gausshj gausshj commented Oct 9, 2025

  • Add support for svd
  • Add test for svd

- Add support for svd
- Add test for svd

Signed-off-by: Gausshj <[email protected]>
Copy link

codecov bot commented Oct 9, 2025

Codecov Report

❌ Patch coverage is 91.52542% with 5 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
grassmann_tensor/tensor.py 91.52% 3 Missing and 2 partials ⚠️

📢 Thoughts on this report? Let us know!

Copy link
Member

@hzhangxyz hzhangxyz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

我们先review一下业务逻辑,先改这数值svd部分吧。你修改后,我们再说代码风格的事情。

数值svd后,恢复grassmann tensor这部分看起来没毛病。


tensor = tensor.reshape((left_dim, right_dim))

U, S, Vh = torch.linalg.svd(tensor.tensor, full_matrices=full_matrices)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里tensor是一个2分块的矩阵,你需要分别进行svd

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

不然的话,原来的分块矩阵进行svd后就不是分块的了

U, S, Vh = torch.linalg.svd(tensor.tensor, full_matrices=full_matrices)

k = min(tensor.tensor.shape[0], tensor.tensor.shape[-1])
k_index = tensor.tensor.shape.index(k)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

分别进行svd后,需要允许有cut dimension的操作,这个在tn中很常见。大概就是删掉最小几个singular value,只保留最大的若干个,这个个数使用参数传进来,默认不进行cut,这里两个分块需要分别cut。

- Perform SVD separately on even/odd parity blocks instead of entire
  rank-2 tensor
- Update the test case with new implementation

Previously, the SVD was applied directly to the full Grassmann tensor,
    which ignored the parity block structure and produced incorrect
    decompositions. Now the tensor is split into even/odd blocks before
    performing SVD, then recombined via block_diag to ensure correct
    parity preservation.

Signed-off-by: Gausshj <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants