Avoid coordinate cache allocation in VectorDifferentialFunction get_jacobian!#622
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #622 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 96 96
Lines 12574 12574
=========================================
Hits 12574 12574 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
If you need this urgent – or want to not work on the dev version, we can also bump (increase) the lowest version number in the Thanks again for noticing and fixing this as well. 👍 |
Co-authored-by: Ronny Bergmann <git@ronnybergmann.net>
|
Thank you very much for the prompt review. Originally, we were planning to publish the newest version today once this is fixed. But, while I tried working our pipeline on the dev version of yours, BTD still was a bottleneck. The current issue on the cache is fixed for sure, but something else is not working. As much as I want to find out where and why rn, I have to pack since I am flying to Korea tomorrow. :) Here is the full stacktrace if it helps: julia --project=. -e 'using Random, LinearAlgebra, Manifolds, ManifoldsBase, RecursiveArrayTools, TensorKitchen; try Random.seed!(42); A = randn(7,6,5); ranks = (2,2,2); manifolds = TensorKitchen._as_join_manifold_tuple(TuckerJoin(size(A), ranks, 2)); backend = TensorKitchen._sum_backend_instance(TensorKitchen.BTDBackend, manifolds, A); model = TensorKitchen.JoinModel{Float64,typeof(backend)}(backend); p0 = TensorKitchen.initial_point(model, :random; verbose=false); println("before solve"); flush(stdout); low = solve(LMSolver(), model; p0, maxiter=2, tol=1e-6, verbose=false, return_stats=true); println("after solve"); println(low.rel_error); catch err; showerror(stdout, err, catch_backtrace()); println(); flush(stdout); end
before solve
^CInterruptException:
Stacktrace:
[1] iterate
@ ./iterators.jl:415 [inlined]
[2] copyto!(dest::Vector{NTuple{210, Float64}}, src::Base.Iterators.Zip{NTuple{210, Tuple{Float64, Float64, Float64}}})
@ Base ./abstractarray.jl:938
[3] _collect(cont::UnitRange{Int64}, itr::Base.Iterators.Zip{NTuple{210, Tuple{Float64, Float64, Float64}}}, ::Base.HasEltype, isz::Base.HasLength)
@ Base ./array.jl:734
[4] collect(itr::Base.Iterators.Zip{NTuple{210, Tuple{Float64, Float64, Float64}}})
@ Base ./array.jl:728
[5] get_robustifier_values(crf::Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, x::Vector{Float64})
@ Manopt ~/Desktop/Github/Manopt.jl/src/plans/robustifiers.jl:159
[6] _get_cost(M::ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, vgf::Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, cr::Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, p::ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}}; value_cache::SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true})
@ Manopt ~/Desktop/Github/Manopt.jl/src/plans/nonlinear_least_squares/nls_objective.jl:161
[7] _get_cost
@ ~/Desktop/Github/Manopt.jl/src/plans/nonlinear_least_squares/nls_objective.jl:155 [inlined]
[8] get_cost(M::ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, nlso::Manopt.ManifoldNonlinearLeastSquaresObjective{Manopt.AllocatingEvaluation, Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, Vector{Float64}}, p::ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}})
@ Manopt ~/Desktop/Github/Manopt.jl/src/plans/nonlinear_least_squares/nls_objective.jl:139
[9] get_cost
@ ~/Desktop/Github/Manopt.jl/src/plans/problem.jl:99 [inlined]
[10] (::TensorKitchen.StopWhenCostRelChangeAndGradientLess{Float64})(problem::Manopt.DefaultManoptProblem{ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Manopt.ManifoldNonlinearLeastSquaresObjective{Manopt.AllocatingEvaluation, Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, Vector{Float64}}}, state::Manopt.LevenbergMarquardtState{ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}}, ArrayPartition{Float64, Tuple{TuckerTangentVector{Float64, 3}, TuckerTangentVector{Float64, 3}}}, Float64, Manopt.DefaultManoptProblem{Fiber{ℝ, TangentSpaceType, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}}}, Manopt.NormalEquationsObjective{Manopt.AllocatingEvaluation, Manopt.LevenbergMarquardtLinearSurrogateObjective{Manopt.AllocatingEvaluation, Float64, Manopt.ManifoldNonlinearLeastSquaresObjective{Manopt.AllocatingEvaluation, Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, Vector{Float64}}, Vector{Float64}}}}, Manopt.ConjugateResidualState{ArrayPartition{Float64, Tuple{TuckerTangentVector{Float64, 3}, TuckerTangentVector{Float64, 3}}}, Float64, Manopt.StopWhenAny{Tuple{Manopt.StopAfterIteration, Manopt.StopWhenGradientNormLess{typeof(norm), Float64, Missing}}}}, Manopt.StopWhenAny{Tuple{Manopt.StopAfterIteration, Manopt.StopWhenGradientNormLess{typeof(norm), Float64, Missing}, Manopt.StopWhenStepsizeLess{Float64}, TensorKitchen.StopWhenCostRelChangeAndGradientLess{Float64}}}, ProductRetraction{Tuple{PolarRetraction, PolarRetraction}}, Vector{Float64}, Vector{Nothing}}, i::Int64)
@ TensorKitchen /src/solvers/manopt_helpers.jl:56
[11] #344
@ ~/Desktop/Github/Manopt.jl/src/plans/stopping_criterion.jl:1336 [inlined]
[12] _fast_any
@ ~/Desktop/Github/Manopt.jl/src/plans/stopping_criterion.jl:1324 [inlined]
[13] _fast_any (repeats 3 times)
@ ~/Desktop/Github/Manopt.jl/src/plans/stopping_criterion.jl:1330 [inlined]
[14] StopWhenAny
@ ~/Desktop/Github/Manopt.jl/src/plans/stopping_criterion.jl:1336 [inlined]
[15] stop_solver!
@ ~/Desktop/Github/Manopt.jl/src/solvers/solver.jl:187 [inlined]
[16] stop_solver!(amp::Manopt.DefaultManoptProblem{ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Manopt.ManifoldNonlinearLeastSquaresObjective{Manopt.AllocatingEvaluation, Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, Vector{Float64}}}, dss::Manopt.DebugSolverState{Manopt.LevenbergMarquardtState{ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}}, ArrayPartition{Float64, Tuple{TuckerTangentVector{Float64, 3}, TuckerTangentVector{Float64, 3}}}, Float64, Manopt.DefaultManoptProblem{Fiber{ℝ, TangentSpaceType, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}}}, Manopt.NormalEquationsObjective{Manopt.AllocatingEvaluation, Manopt.LevenbergMarquardtLinearSurrogateObjective{Manopt.AllocatingEvaluation, Float64, Manopt.ManifoldNonlinearLeastSquaresObjective{Manopt.AllocatingEvaluation, Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, Vector{Float64}}, Vector{Float64}}}}, Manopt.ConjugateResidualState{ArrayPartition{Float64, Tuple{TuckerTangentVector{Float64, 3}, TuckerTangentVector{Float64, 3}}}, Float64, Manopt.StopWhenAny{Tuple{Manopt.StopAfterIteration, Manopt.StopWhenGradientNormLess{typeof(norm), Float64, Missing}}}}, Manopt.StopWhenAny{Tuple{Manopt.StopAfterIteration, Manopt.StopWhenGradientNormLess{typeof(norm), Float64, Missing}, Manopt.StopWhenStepsizeLess{Float64}, TensorKitchen.StopWhenCostRelChangeAndGradientLess{Float64}}}, ProductRetraction{Tuple{PolarRetraction, PolarRetraction}}, Vector{Float64}, Vector{Nothing}}}, k::Int64)
@ Manopt ~/Desktop/Github/Manopt.jl/src/solvers/debug_solver.jl:42
[17] stop_solver!
@ ~/Desktop/Github/Manopt.jl/src/solvers/solver.jl:190 [inlined]
[18] solve!(p::Manopt.DefaultManoptProblem{ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Manopt.ManifoldNonlinearLeastSquaresObjective{Manopt.AllocatingEvaluation, Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, Vector{Float64}}}, s::Manopt.ReturnSolverState{Manopt.DebugSolverState{Manopt.LevenbergMarquardtState{ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}}, ArrayPartition{Float64, Tuple{TuckerTangentVector{Float64, 3}, TuckerTangentVector{Float64, 3}}}, Float64, Manopt.DefaultManoptProblem{Fiber{ℝ, TangentSpaceType, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}}}, Manopt.NormalEquationsObjective{Manopt.AllocatingEvaluation, Manopt.LevenbergMarquardtLinearSurrogateObjective{Manopt.AllocatingEvaluation, Float64, Manopt.ManifoldNonlinearLeastSquaresObjective{Manopt.AllocatingEvaluation, Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, Vector{Float64}}, Vector{Float64}}}}, Manopt.ConjugateResidualState{ArrayPartition{Float64, Tuple{TuckerTangentVector{Float64, 3}, TuckerTangentVector{Float64, 3}}}, Float64, Manopt.StopWhenAny{Tuple{Manopt.StopAfterIteration, Manopt.StopWhenGradientNormLess{typeof(norm), Float64, Missing}}}}, Manopt.StopWhenAny{Tuple{Manopt.StopAfterIteration, Manopt.StopWhenGradientNormLess{typeof(norm), Float64, Missing}, Manopt.StopWhenStepsizeLess{Float64}, TensorKitchen.StopWhenCostRelChangeAndGradientLess{Float64}}}, ProductRetraction{Tuple{PolarRetraction, PolarRetraction}}, Vector{Float64}, Vector{Nothing}}}})
@ Manopt ~/Desktop/Github/Manopt.jl/src/solvers/solver.jl:160
[19] LevenbergMarquardt!(M::ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, nlso::Manopt.ManifoldNonlinearLeastSquaresObjective{Manopt.AllocatingEvaluation, Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, Vector{Float64}}, p::ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}}; retraction_method::ProductRetraction{Tuple{PolarRetraction, PolarRetraction}}, stopping_criterion::Manopt.StopWhenAny{Tuple{Manopt.StopAfterIteration, Manopt.StopWhenGradientNormLess{typeof(norm), Float64, Missing}, Manopt.StopWhenStepsizeLess{Float64}, TensorKitchen.StopWhenCostRelChangeAndGradientLess{Float64}}}, candidate_acceptance_threshold::Float64, damping_increase_factor::Float64, damping_increase_threshold::Float64, damping_reduction_threshold::Float64, damping_reduction_factor::Float64, damping_term_min::Float64, damping_term_max::Float64, initial_damping_term::Float64, debug::Vector{Any}, initial_residual_values::Vector{Float64}, use_unified_basis::Bool, initial_jacobian_matrices::Vector{Nothing}, scaling_threshold::Float64, scaling_mode::Symbol, minimum_acceptable_model_improvement::Float64, sub_objective::Manopt.NormalEquationsObjective{Manopt.AllocatingEvaluation, Manopt.LevenbergMarquardtLinearSurrogateObjective{Manopt.AllocatingEvaluation, Float64, Manopt.ManifoldNonlinearLeastSquaresObjective{Manopt.AllocatingEvaluation, Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, Vector{Float64}}, Vector{Float64}}}, sub_problem::Manopt.DefaultManoptProblem{Fiber{ℝ, TangentSpaceType, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}}}, Manopt.NormalEquationsObjective{Manopt.AllocatingEvaluation, Manopt.LevenbergMarquardtLinearSurrogateObjective{Manopt.AllocatingEvaluation, Float64, Manopt.ManifoldNonlinearLeastSquaresObjective{Manopt.AllocatingEvaluation, Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, Vector{Float64}}, Vector{Float64}}}}, sub_state::Manopt.ConjugateResidualState{ArrayPartition{Float64, Tuple{TuckerTangentVector{Float64, 3}, TuckerTangentVector{Float64, 3}}}, Float64, Manopt.StopWhenAny{Tuple{Manopt.StopAfterIteration, Manopt.StopWhenGradientNormLess{typeof(norm), Float64, Missing}}}}, kwargs::@Kwargs{return_state::Bool})
@ Manopt ~/Desktop/Github/Manopt.jl/src/solvers/LevenbergMarquardt.jl:271
[20] LevenbergMarquardt(M::ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, nlso::Manopt.ManifoldNonlinearLeastSquaresObjective{Manopt.AllocatingEvaluation, Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, Vector{Float64}}, p::ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}}; kwargs::@Kwargs{retraction_method::ProductRetraction{Tuple{PolarRetraction, PolarRetraction}}, stopping_criterion::Manopt.StopWhenAny{Tuple{Manopt.StopAfterIteration, Manopt.StopWhenGradientNormLess{typeof(norm), Float64, Missing}, Manopt.StopWhenStepsizeLess{Float64}, TensorKitchen.StopWhenCostRelChangeAndGradientLess{Float64}}}, initial_residual_values::Vector{Float64}, candidate_acceptance_threshold::Float64, damping_increase_factor::Float64, damping_increase_threshold::Float64, damping_reduction_threshold::Float64, damping_reduction_factor::Float64, damping_term_min::Float64, initial_damping_term::Float64, use_unified_basis::Bool, sub_objective::Manopt.NormalEquationsObjective{Manopt.AllocatingEvaluation, Manopt.LevenbergMarquardtLinearSurrogateObjective{Manopt.AllocatingEvaluation, Float64, Manopt.ManifoldNonlinearLeastSquaresObjective{Manopt.AllocatingEvaluation, Manopt.VectorDifferentialFunction{Manopt.AllocatingEvaluation, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, Manopt.FunctionVectorialType{NestedPowerRepresentation}, TensorKitchen.var"#_lm_residual_function##0#_lm_residual_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_differential_action_function##0#_lm_differential_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, TensorKitchen.var"#_lm_adjoint_action_function##0#_lm_adjoint_action_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, Float64}, Int64}, Manopt.ComponentwiseRobustifierFunction{Manopt.IdentityRobustifier}, Vector{Float64}}, Vector{Float64}}}, sub_state::Manopt.ConjugateResidualState{ArrayPartition{Float64, Tuple{TuckerTangentVector{Float64, 3}, TuckerTangentVector{Float64, 3}}}, Float64, Manopt.StopWhenAny{Tuple{Manopt.StopAfterIteration, Manopt.StopWhenGradientNormLess{typeof(norm), Float64, Missing}}}}, debug::Vector{Any}, return_state::Bool})
@ Manopt ~/Desktop/Github/Manopt.jl/src/solvers/LevenbergMarquardt.jl:153
[21] solve_lm(model::JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, model_cost::TensorKitchen.var"#model_cost_function##0#model_cost_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}}, model_egrad::TensorKitchen.var"#model_egrad_function##0#model_egrad_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}}, M::ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, p0::ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}}; maxiter::Int64, tol::Float64, verbose::Bool, return_stats::Bool, normA2::Float64, model_grad::Function, vector_transport_method::Nothing, post_step_callback::Nothing, diagnostics_recorder::Nothing, iteration_callbacks::Tuple{}, η::Float64, damping_term_min::Float64, β::Float64, expect_zero_residual::Bool, linear_subsolver::typeof(Manopt.default_lm_lin_solve!), grad_tol::Nothing, normalized_objective::Bool)
@ TensorKitchen /src/solvers/lm.jl:203
[22] run_second_order_solver(solver::LMSolver, setup::@NamedTuple{model::JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}, M::ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, p0::ArrayPartition{Float64, Tuple{TuckerPoint{Float64, 3}, TuckerPoint{Float64, 3}}}, model_cost::TensorKitchen.var"#model_cost_function##0#model_cost_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}}, model_egrad::TensorKitchen.var"#model_egrad_function##0#model_egrad_function##1"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}}, model_grad::TensorKitchen.var"#103#104"{JoinModel{Float64, BTDBackend{Float64, 3, Tuple{JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}, JoinComponent{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, TensorKitchen.DefaultJoinEmbedding}}, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}, Array{Float64, 3}, Vector{Float64}, ProductManifold{ℝ, Tuple{Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}, Tucker{ℝ, ManifoldsBase.TypeParameter{Tuple{(7, 6, 5), (2, 2, 2)}}, 3}}}, Nothing, Vector{Vector{Float64}}}}}, normA2::Float64}; maxiter::Int64, tol::Float64, verbose::Bool, return_stats::Bool, vector_transport_method::Nothing, post_step_callback::Nothing, diagnostics_recorder::Nothing, iteration_callbacks::Tuple{}, grad_tol::Nothing, normalized_objective::Bool)
Sorry for dumping this without any clues here. If you don't have time to check it out today, I can try to track down on the train tmrw. |
|
Then maybe take this over to the issue. I will merge this and it is included in the next release then. For the error – best copy it over to the issue then, since this is merged soon. Without more details I can not do much than a well-educated guess. At first glance, I am surprised about step Manopt.jl/src/plans/robustifiers.jl Lines 157 to 160 in a86a1ea which would expect the But no worries; then I will first merge this and release it together with the other open PR – and for you first of all – Gute Reise! |
* Fix a few typos in the random walk solver example. * Initial setup of Gradient Sampling. * Setup the boiler plate code for the high-level interface and create the documentation page. * Sketch the algorithm further. * add a bit of documentation. * Documentation and show/print for the gradient sampling state * Setup a first example and fix the firrst few bugs. * Add Changelog entry. * add Ole Gunnar to the about.md * Update Hajgs link on the about page. * Start testing. * bump version. * Apply suggestions from code review --------- Co-authored-by: Ole Gunnar Røsholt Hovland <73483154+elorannug@users.noreply.github.com>
This PR fixes the
FunctionVectorialTypeJacobian-action path forVectorDifferentialFunction.The affected
get_jacobian!method does not usec_cache.This can fail for manifolds/containers that do not support coordinate allocation, even though the Jacobian action itself is coordinate-free. The default is changed to
nothing.