📄 t_algorithms_doc.html
字号:
<html xmlns:mwsh="http://www.mathworks.com/namespace/mcode/v1/syntaxhighlight.dtd"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!--This HTML is auto-generated from an M-file.To make changes, update the M-file and republish this document. --> <title>Algorithms for computing tensor decompositions</title> <meta name="generator" content="MATLAB 7.2"> <meta name="date" content="2007-01-10"> <meta name="m-file" content="T_algorithms_doc"><style>body { background-color: white; margin:10px;}h1 { color: #990000; font-size: x-large;}h2 { color: #990000; font-size: medium;}/* Make the text shrink to fit narrow windows, but not stretch too far in wide windows. On Gecko-based browsers, the shrink-to-fit doesn't work. */ p,h1,h2,div.content div { /* for MATLAB's browser */ width: 600px; /* for Mozilla, but the "width" tag overrides it anyway */ max-width: 600px; /* for IE */ width:expression(document.body.clientWidth > 620 ? "600px": "auto" );}pre.codeinput { background: #EEEEEE; padding: 10px;}@media print { pre.codeinput {word-wrap:break-word; width:100%;}} span.keyword {color: #0000FF}span.comment {color: #228B22}span.string {color: #A020F0}span.untermstring {color: #B20000}span.syscmd {color: #B28C00}pre.codeoutput { color: #666666; padding: 10px;}pre.error { color: red;}p.footer { text-align: right; font-size: xx-small; font-weight: lighter; font-style: italic; color: gray;} </style></head> <body> <div class="content"> <h1>Algorithms for computing tensor decompositions</h1> <introduction></introduction> <h2>Contents</h2> <div> <ul> <li><a href="#1">Alternating least squares for PARAFAC/CANDECOMP</a></li> <li><a href="#6">Alternating least squares for Tucker model</a></li> </ul> </div> <h2>Alternating least squares for PARAFAC/CANDECOMP<a name="1"></a></h2> <p>The function <tt>parafac_als</tt> computes an estimate of the best rank-R PARAFAC model of a tensor X using an alternating least-squares algorithm. The input X can be a tensor, sptensor, ktensor, or ttensor. The result P is a ktensor. </p><pre class="codeinput">rand(<span class="string">'state'</span>,0);X = sptenrand([5 4 3], 10)</pre><pre class="codeoutput">X is a sparse tensor of size 5 x 4 x 3 with 10 nonzeros (1,4,1) 0.4966 (2,2,3) 0.8998 (3,2,3) 0.8216 (3,3,1) 0.6449 (3,3,3) 0.8180 (3,4,1) 0.6602 (4,1,2) 0.3420 (4,1,3) 0.2897 (5,2,2) 0.3412 (5,3,2) 0.5341</pre><pre class="codeinput">P = parafac_als(X,2)</pre><pre class="codeoutput">Alternating Least-Squares: Iter 1: fit = 3.219563e-001 fitdelta = 3.2e-001 Iter 2: fit = 3.645517e-001 fitdelta = 4.3e-002 Iter 3: fit = 3.732887e-001 fitdelta = 8.7e-003 Iter 4: fit = 3.809608e-001 fitdelta = 7.7e-003 Iter 5: fit = 4.021826e-001 fitdelta = 2.1e-002 Iter 6: fit = 4.427524e-001 fitdelta = 4.1e-002 Iter 7: fit = 4.734919e-001 fitdelta = 3.1e-002 Iter 8: fit = 4.848760e-001 fitdelta = 1.1e-002 Iter 9: fit = 4.890031e-001 fitdelta = 4.1e-003 Iter 10: fit = 4.907726e-001 fitdelta = 1.8e-003 Iter 11: fit = 4.916244e-001 fitdelta = 8.5e-004 Iter 12: fit = 4.920996e-001 fitdelta = 4.8e-004 Iter 13: fit = 4.924246e-001 fitdelta = 3.2e-004 Iter 14: fit = 4.926962e-001 fitdelta = 2.7e-004 Iter 15: fit = 4.929575e-001 fitdelta = 2.6e-004 Iter 16: fit = 4.932285e-001 fitdelta = 2.7e-004 Iter 17: fit = 4.935198e-001 fitdelta = 2.9e-004 Iter 18: fit = 4.938385e-001 fitdelta = 3.2e-004 Iter 19: fit = 4.941904e-001 fitdelta = 3.5e-004 Iter 20: fit = 4.945813e-001 fitdelta = 3.9e-004 Iter 21: fit = 4.950178e-001 fitdelta = 4.4e-004 Iter 22: fit = 4.955072e-001 fitdelta = 4.9e-004 Iter 23: fit = 4.960583e-001 fitdelta = 5.5e-004 Iter 24: fit = 4.966814e-001 fitdelta = 6.2e-004 Iter 25: fit = 4.973882e-001 fitdelta = 7.1e-004 Iter 26: fit = 4.981921e-001 fitdelta = 8.0e-004 Iter 27: fit = 4.991075e-001 fitdelta = 9.2e-004 Iter 28: fit = 5.001490e-001 fitdelta = 1.0e-003 Iter 29: fit = 5.013282e-001 fitdelta = 1.2e-003 Iter 30: fit = 5.026502e-001 fitdelta = 1.3e-003 Iter 31: fit = 5.041052e-001 fitdelta = 1.5e-003 Iter 32: fit = 5.056587e-001 fitdelta = 1.6e-003 Iter 33: fit = 5.072418e-001 fitdelta = 1.6e-003 Iter 34: fit = 5.087490e-001 fitdelta = 1.5e-003 Iter 35: fit = 5.100586e-001 fitdelta = 1.3e-003 Iter 36: fit = 5.110745e-001 fitdelta = 1.0e-003 Iter 37: fit = 5.117692e-001 fitdelta = 6.9e-004 Iter 38: fit = 5.121888e-001 fitdelta = 4.2e-004 Iter 39: fit = 5.124165e-001 fitdelta = 2.3e-004 Iter 40: fit = 5.125308e-001 fitdelta = 1.1e-004 Iter 41: fit = 5.125856e-001 fitdelta = 5.5e-005P is a ktensor of size 5 x 4 x 3 P.lambda = [ 1.3189 1.1109 ] P.U{1} = 0.0019 0.2743 0.6406 -0.0177 0.7679 0.9615 -0.0000 0.0000 -0.0000 -0.0000 P.U{2} = -0.0000 0.0000 0.9413 -0.0855 0.2693 0.7083 -0.2036 0.7007 P.U{3} = 0.0402 0.8828 -0.0000 -0.0000 0.9992 0.4698</pre><pre class="codeinput">P = parafac_als(X,2,struct(<span class="string">'dimorder'</span>,[3 2 1]))</pre><pre class="codeoutput">Alternating Least-Squares: Iter 1: fit = 3.575290e-001 fitdelta = 3.6e-001 Iter 2: fit = 4.968299e-001 fitdelta = 1.4e-001 Iter 3: fit = 5.047740e-001 fitdelta = 7.9e-003 Iter 4: fit = 5.084288e-001 fitdelta = 3.7e-003 Iter 5: fit = 5.103942e-001 fitdelta = 2.0e-003 Iter 6: fit = 5.114388e-001 fitdelta = 1.0e-003 Iter 7: fit = 5.119941e-001 fitdelta = 5.6e-004 Iter 8: fit = 5.122906e-001 fitdelta = 3.0e-004 Iter 9: fit = 5.124494e-001 fitdelta = 1.6e-004 Iter 10: fit = 5.125349e-001 fitdelta = 8.5e-005P is a ktensor of size 5 x 4 x 3 P.lambda = [ 1.3217 1.0933 ] P.U{1} = -0.0029 0.2940 0.6361 -0.0293 0.7716 0.9554 0.0000 -0.0000 0.0000 0.0000 P.U{2} = 0.0000 -0.0000 0.9356 -0.0865 0.3018 0.6913 -0.1832 0.7174 P.U{3} = 0.0483 0.9024 0.0000 0.0000 0.9988 0.4308</pre><pre class="codeinput">P = parafac_als(X,2,struct(<span class="string">'dimorder'</span>,[3 2 1],<span class="string">'init'</span>,<span class="string">'nvecs'</span>))</pre><pre class="codeoutput"> Computing 2 leading e-vectors for factor 2. Computing 2 leading e-vectors for factor 1.Alternating Least-Squares: Iter 1: fit = 3.767513e-001 fitdelta = 3.8e-001 Iter 2: fit = 4.273501e-001 fitdelta = 5.1e-002 Iter 3: fit = 4.966758e-001 fitdelta = 6.9e-002 Iter 4: fit = 5.061467e-001 fitdelta = 9.5e-003 Iter 5: fit = 5.092466e-001 fitdelta = 3.1e-003 Iter 6: fit = 5.108361e-001 fitdelta = 1.6e-003 Iter 7: fit = 5.116747e-001 fitdelta = 8.4e-004 Iter 8: fit = 5.121203e-001 fitdelta = 4.5e-004 Iter 9: fit = 5.123582e-001 fitdelta = 2.4e-004 Iter 10: fit = 5.124859e-001 fitdelta = 1.3e-004 Iter 11: fit = 5.125545e-001 fitdelta = 6.9e-005P is a ktensor of size 5 x 4 x 3 P.lambda = [ 1.3212 1.0943 ] P.U{1} = -0.0028 0.2928 0.6367 -0.0289 0.7711 0.9557 0.0000 -0.0000 0.0000 0.0000 P.U{2} = 0.0000 -0.0000 0.9360 -0.0856 0.2999 0.6927 -0.1842 0.7161 P.U{3} = 0.0471 0.9012 0.0000 0.0000 0.9989 0.4334</pre><pre class="codeinput">U0 = {rand(5,2),rand(4,2),[]}; <span class="comment">%<-- Initial guess for factors of P</span>P = parafac_als(X,2,struct(<span class="string">'dimorder'</span>,[3 2 1],<span class="string">'init'</span>,{U0}))</pre><pre class="codeoutput">Alternating Least-Squares: Iter 1: fit = 4.361298e-001 fitdelta = 4.4e-001 Iter 2: fit = 5.082769e-001 fitdelta = 7.2e-002 Iter 3: fit = 5.105738e-001 fitdelta = 2.3e-003 Iter 4: fit = 5.116456e-001 fitdelta = 1.1e-003 Iter 5: fit = 5.121929e-001 fitdelta = 5.5e-004 Iter 6: fit = 5.124502e-001 fitdelta = 2.6e-004 Iter 7: fit = 5.125615e-001 fitdelta = 1.1e-004 Iter 8: fit = 5.126068e-001 fitdelta = 4.5e-005P is a ktensor of size 5 x 4 x 3 P.lambda = [ 1.3217 1.1037 ] P.U{1} = -0.0007 0.2835
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -