日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab练习程序(三阶张量T-QR分解)

發布時間:2023/12/31 循环神经网络 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab练习程序(三阶张量T-QR分解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://www.cnblogs.com/tiandsp/archive/2012/10/31/2747971.html?

這里所謂的張量和黎曼那里的張量是不一樣的,那個張量更多的用在物理上,這個張量就是矩陣的擴展。比如零階張量就是數,一階張量就是向量,二階張量就是矩陣,三階四階就是更高維的數的集合。這個領域現在在數學上還都是很新的東西,矩陣的秩我們都知道怎么求,但是三維的張量或更高維的張量的秩現在在數學上也沒有結果。至于張量的奇異值分解也只是也只是用很早的如用HOSVD來處理,我感覺這并不完全合適,新的分解算法就連老美也都沒研究出來,從二維到多維的確有很多基礎的理論都不適用了,像兩個張量相乘這樣基礎的算法,現在雖然有,但我感覺也不是通用的,還要繼續改進。

  下面就是我看的一篇論文的張量相乘和分解方法,她的理論也可能不正確,不過這種新領域,大家都是在探索。

  論文在這里:http://www.cs.tufts.edu/tech_reports/reports/2010-5/report.pdf,他主要介紹的是T-svd,T-svd分解后合成的只是原張量的一個近似結果,而T-QR就能得到一個準確的結果,所以我這里用了T-QR。以Matlab角度來看T-SVD和T-QR的代碼其實是很類似的。

首先是兩個函數的代碼,放在.m文件中,文件名就是默認文件名(函數名)

?1 ? mul.m

function c=mul(a,b)[a_n1 a_n2 a_n3]=size(a);[b_n1 b_n2 b_n3]=size(b);c=zeros(a_n1,b_n2,a_n3);A=cell(a_n3,1);B=cell(b_n3,1);for i=1:a_n3A{i}=a(:,:,i);B{i}=b(:,:,i);endindex_up=zeros(1,a_n3);index_down=zeros(1,a_n3);for i=1:a_n3 index_up(i)=a_n3-i+1;index_down(i)=i;ends=cell(a_n3,a_n3);for i=1:a_n3for j=1:a_n3if i==js{i,j}=A{1};end if j>is{i,j}=A{index_up(j-i)};end if j<is{i,j}=A{index_down(i-j+1)};end end endre=cell(a_n3,1);for i=1:a_n3re{i}=zeros(a_n1,b_n2);endfor i=1:a_n3for j=1:a_n3for k=1:1re{i,k}=re{i,k}+s{i,j}*B{j,k};endend endfor i=1:a_n3c(:,:,i)=re{i}; endend

2 ?transpos.m?

function a=transpos(b) [n1 n2 n3]=size(b);a=zeros(n2,n1,n3);for i=1:n3a(:,:,i)=b(:,:,i)';end end

最后是在matlab命令行中的代碼:

clear all; close all; clc; n1=3; n2=3; n3=3;A(:,:,1)=[10 23 34;43 55 63;72 85 96]; A(:,:,2)=[24 17 35;52 36 55;81 94 75]; A(:,:,3)=[65 16 52;21 47 78;92 33 43]; %A=imread('s.jpg');D=fft(A,[],3);for i=1:n3[q r]=qr(D(:,:,i));%[u s v]=svd(D(:,:,i));Q(:,:,i)=q;R(:,:,i)=r;%S(:,:,i)=s; end Q=ifft(Q,[],3); R=ifft(R,[],3); %S=ifft(S,[],3);B(:,:,1)=eye(n1,n2); B(:,:,2)=zeros(n1,n2); B(:,:,3)=zeros(n1,n2);%c=mul(mul(U,S),transpos(V)); c=mul(Q,R);
c

?

總結

以上是生活随笔為你收集整理的matlab练习程序(三阶张量T-QR分解)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。