Skip to content

Stabilize tensor-train relative truncation - #5251

Open
FlorianPfaff wants to merge 1 commit into
mainfrom
fix/tensor-train-relative-truncation-refresh-20260806
Open

Stabilize tensor-train relative truncation#5251
FlorianPfaff wants to merge 1 commit into
mainfrom
fix/tensor-train-relative-truncation-refresh-20260806

Conversation

@FlorianPfaff

Copy link
Copy Markdown
Owner

Bug

TensorTrain.from_dense(...) computed the Frobenius norm with an unscaled Euclidean norm, and _choose_rank(...) squared raw singular values while evaluating truncation tails.

For large but finite tensors, those intermediate operations overflow even when the tensor, requested relative tolerance, and correct tensor-train decomposition are finite. For example, diag(1e200, 1e200) raises under strict NumPy overflow handling; without strict handling, the resulting infinite tolerance can incorrectly collapse the decomposition to rank one.

Fix

  • compute vector norms after scaling by the largest magnitude;
  • compute singular-value tail energies in normalized coordinates;
  • compare against the correspondingly scaled local tolerance;
  • preserve zero-tolerance and max_rank behavior.

Regression coverage

A focused test constructs diag(1e200, 1e200) under np.errstate(over="raise", invalid="raise"). It verifies ranks (1, 2, 1) and reconstruction of the finite input.

Validation

  • refreshed directly onto current main (f196ec41d1d8681e279936db9f1a0a3abfa276e7);
  • final commit changes only the tensor-train helper and its focused regression test;
  • supersedes Stabilize tensor-train relative truncation #5249, whose test workflow ran against an older base with a now-fixed APT setup;
  • GitHub Actions is authoritative for the full repository matrix.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

MegaLinter analysis: Success

Descriptor Linter Files Fixed Errors Warnings Elapsed time
✅ COPYPASTE jscpd yes no no 27.83s
✅ JSON prettier 7 0 0 0 1.08s
✅ JSON v8r 7 0 0 4.05s
✅ MARKDOWN markdownlint 68 0 0 0 2.0s
✅ MARKDOWN markdown-table-formatter 68 0 0 0 0.8s
✅ PYTHON black 1866 87 0 0 98.53s
✅ PYTHON isort 1866 140 0 0 2.89s
✅ REPOSITORY betterleaks yes no no 2.46s
✅ REPOSITORY checkov yes no no 55.23s
✅ REPOSITORY gitleaks yes no no 17.91s
✅ REPOSITORY git_diff yes no no 0.33s
✅ REPOSITORY secretlint yes no no 84.1s
✅ REPOSITORY syft yes no no 6.0s
✅ REPOSITORY trivy-sbom yes no no 6.19s
✅ REPOSITORY trufflehog yes no no 32.61s
✅ YAML prettier 11 0 0 0 0.79s
✅ YAML v8r 11 0 0 11.59s
✅ YAML yamllint 11 0 0 0.62s

Notices

📣 MegaLinter 9.5.0 is out! Discover the new features and security recommendations in the release announcement. (Skip this info by defining SECURITY_SUGGESTIONS: false)

See detailed reports in MegaLinter artifacts

Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)

  • Documentation: Custom Flavors
  • Command: npx mega-linter-runner@9.6.0 --custom-flavor-setup --custom-flavor-linters PYTHON_BLACK,PYTHON_ISORT,COPYPASTE_JSCPD,JSON_V8R,JSON_PRETTIER,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_CHECKOV,REPOSITORY_GIT_DIFF,REPOSITORY_GITLEAKS,REPOSITORY_BETTERLEAKS,REPOSITORY_SECRETLINT,REPOSITORY_SYFT,REPOSITORY_TRIVY_SBOM,REPOSITORY_TRUFFLEHOG,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R

MegaLinter is graciously provided by OX Security
Show us your support by starring ⭐ the repository

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.

1 participant