-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A using case: iterative dominant eigensolver #30
Comments
这是个很好的例子,但我感觉可能没有完全解决我的问题: |
没听懂,你说目标函数?是fidelity,即和target的相似度。
svd, norm, 点除这些的AD rule 都是ChainRules里面现成的。每一步都需要微分,但是Zygote自动帮你串联起来了。
普通函数
你是说你写的那些rrule吗?using 了就可以了。 |
此外,幂法只能求解模最大特征值/特征向量;如果想要求解学长例子里的最小特征值对应的特征向量,需要采用反幂法,对 |
可以求最小的,只要做个shift就行,类似加个identity矩阵,在加个负号,很容易把最小eigenvalue变成最大的,inv不是必要的。
具体我记不清,但是即使没有的话,另一个仓库抄过来就行: |
那样就没问题,最小最大的幂法都可以写,我去试一下 但我刚刚查了...chainrules没有qr的AD rule... |
要不你试着自己给ChainRules提个PR? 正好是个锻炼的机会~ |
如果有这样的能力,我自然是愿意去做的;但我觉得恐怕时间来不及,这方面微分规则推导我也不熟悉;而且项目规划里是在low-level的稀疏矩阵乘法上实现svd_lowrank,所以我当时以为qr和svd应该是有配套的设施不需要我再去做build-in的低效rules实现? |
行吧,明明已经把backward rule实现都贴给你了,我来提PR吧~ |
稀疏和非稀疏的情况在实现上应该差别还是蛮大的. 再者试图构造稀疏矩阵QR的求导真的有意义么?QR分解的结果也与稀疏矩阵的0值有关,所以如果要正确求导的话,应该是要考虑0值的导数。这种情况下稀疏的qr分解求导其实一定程度上已经退化成了稠密的qr分解求导。 |
@johnnychen94 这里我们其实讨论了两个问题,实现low rank svd应该只涉及dense矩阵的qr:https://github.com/jieli-matrix/svd_lowrank/blob/610cf33ac59ad9235fa5cc57f166a55ed01d9e1e/pytorch_implement/get_approximate_basis.py#L50 学妹之前的顾虑是求稀疏矩阵逆过程中需要稀疏矩阵QR,稀疏矩阵的逆是个很不好做的问题,因为结果无法直接表示为稀疏矩阵,或许可以在krylov空间做,或者一些对接近对角的稀疏矩阵作近似。但这些不重要,因为可以绕开,很少有人会直接求稀疏矩阵逆。 |
我今早想了一下,low rank svd确实只涉及到dense矩阵的qr,所以目前是需要封装成 |
我和久宁聊了下,感觉没有demo别人用这个库可能有点困难, |
Closed since I open it in #33 |
Here, I first compute the dominant eigenvalue of
A
, and use the fidelity between this dominant eigenvalue and target vector as the loss.The text was updated successfully, but these errors were encountered: