Shampoo takes the inverse fourth root of the preconditioners, not the inverse. With a left and right preconditioner each taking a quarter power, the overall scaling matches an inverse square root of the full curvature.
Implement precondition_diag(L, G, R), the two-sided scaling under diagonal preconditioners.
Multiply each row of G by L to the minus one quarter, and each column by R to the minus one quarter.
No results yet
Run your code to check it against the examples, or submit to run every test.