全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

张量t-product积还有另一种实现方式?

时间:2023-07-21 11:45

人气:

作者:admin

标签: 另一  还有    张量  t-product 

导读:这说明我们想要实现 t-product积 不用费劲的去搞循环矩阵,也不用去搞什么分块展开再折叠,我们要做的只是,**傅立叶变换--相乘--傅立叶逆变换**!!!...

1.jpg

very amazing啊,这说明什么,这说明我们想要实现 t-product积 不用费劲的去搞循环矩阵,也不用去搞什么分块展开再折叠,我们要做的只是, 傅立叶变换--相乘--傅立叶逆变换 !!!

** PART.1 流程讲解**

原本的t-QR分解流程:

1.jpg

** PART.2 MATLAB实现**

原始版本t-product

function C=t_prod(A,B)
% @author:slandarer
% 用于进行张量t-product积
% A*B=fold(bcirc(A)·unfold(B))

% 获取张量大小
[l,p,n]=size(A);dimA=[l,p,n];
[p,m,n]=size(B);dimB=[p,m,n];
dimC=[l,m,n];

if dimA(2)~=dimB(1) || dimA(3)~=dimB(3) 
    error('Inner tensor dimensions must agree.');
end

% 对A,B进行unfold展开操作
ufold_A=reshape(permute(A,[2,1,3]),dimA(2),[])';
ufold_B=reshape(permute(B,[2,1,3]),dimB(2),[])';

% 对A构建循环矩阵
bcirc_A=zeros([l*n,p*n]);
for i=1:n
    bcirc_A(:,(1:p)+(i-1)*p)=circshift(ufold_A,l*(i-1),1);
end

% bcirc(A)·unfold(B)
AB=bcirc_A*ufold_B;

% 还原张量维度
C=ipermute(reshape(AB',dimC([2,1,3])),[2,1,3]);
end

fft版本t-product

function C=t_prod_fft(A,B)
% @author:slandarer
% 基于快速傅立叶变换的张量t-product积

if size(A,2)~=size(B,1) || size(A,3)~=size(B,3) 
    error('Inner tensor dimensions must agree.');
end

fftA=fft(A,[],3);
fftB=fft(B,[],3);
fftC=zeros([size(A,1),size(B,2),size(A,3)]);
for i=1:size(A,3)
    fftC(:,:,i)=fftA(:,:,i)*fftB(:,:,i);   
end
C=ifft(fftC,[],3);
end

比较测试

% test t-product
addpath('.t_product')

A=zeros(2,3,3);
A(:,:,1)=[1  2  3; 3  4  5];
A(:,:,2)=[5  6  7; 7  8  9];
A(:,:,3)=[9 10 11;11 12 13];

B=zeros(3,2,3);
B(:,:,1)=[1  2; 3  4; 5  6];
B(:,:,2)=[5  6; 7  8; 9 10];
B(:,:,3)=[9 10;11 12;13 14];


tic
C1=t_prod(A,B)
toc

tic
C2=t_prod_fft(A,B)
toc

C1(:,:,1) =

438 492

564 636

C1(:,:,2) =

438 492

564 636

C1(:,:,3) =

294 348

420 492

历时 0.005764 秒。

C2(:,:,1) =

438 492

564 636

C2(:,:,2) =

438 492

564 636

C2(:,:,3) =

294 348

420 492

历时 0.001014 秒。

可以发现结果完全相同,而fft版本代码更简短,而且因为省去了循环矩阵创建等操作,运行速度也相较于原始版本更快。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信