** part.0 长相离谱的张量转置**
注:此转置操作与 t-product 积相对应,在其他类型张量运算中的转置操作可能有不同的定义方式,请注意区分。
简单描述一下:
我们把三维张量每一个frontal slices(面向我们的切片),进行转置,然后将序号2到n的切片顺序完全反过来,图片描述如下:
假如以下为原始张量:
转置完成后:
那么。。。为什么会有如此的操作呢,其实这都是为了之后的张量inside product做准备(不叫做内积是因为有某些性质不符合内积的定义),和向量内积很像,张量内积也需要其中某个张量转置之后和另一个张量做 t-product 积,既然是做 t-product 积,就要迁就于 t-product 积的某些性质。
这里再重提一下 t-product 积的定义:
** part.1 转置的特殊性质**
首先说明一下 squeeze 操作及 twist, 简单一张图就可以描述:
这都可以相等。。very amazing 啊 ,光证明出来咋能不验证呢?
** part.2 matlab实现**
我们编写如下 matlab 程序(引用的子函数放到最后):
x=zeros([2,1,3]);x(:,:,1)=[1;2];x(:,:,2)=[3;4];x(:,:,3)=[5;6];c=zeros([1,1,3]);c(:)=[1,2,3];squeeze(t_prod(x,c))squeeze(x)*bcirc(t_t(c))ans =
20 20 1426 26 20ans =
20 20 1426 26 20左右两边运行结果一致,非常完美,另外各个子函数如下:
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张量转置
function at=t_t(a)% @author:slandarer% 应对与张量t-product积的转置[l,m,n]=size(a);at=zeros([m,l,n]);% fronral slices转置for i=1:size(a,3) at(:,:,i)=a(:,:,i)';end% 径向重排序if size(a,3) >1 at(:,:,1:end)=at(:,:,[1,end:-1:2]);endendsqueeze
function squeezex=squeeze(x)% @author:slandarer% lateral slice 翻转if size(x,2)==1 squeezex=permute(x,[1,3,2]);else error('mycomponent:incorrecttype',... 'error input: ninput must be a lateral slice.')endendbcirc
function bcirca=bcirc(a)% @author:slandarer% 用于张量展开为循环矩阵% 获取张量大小[l,p,n]=size(a);dima=[l,p,n];% 对a进行unfold展开操作ufold_a=reshape(permute(a,[2,1,3]),dima(2),[])';% 对a构建循环矩阵bcirca=zeros([l*n,p*n]);for i=1:n bcirca(:,(1:p)+(i-1)*p)=circshift(ufold_a,l*(i-1),1);endend
巴龙
西部数据WDBLACKSN750评测 到底怎么样
如何利用光电晶体管实现一种超低能耗的光驱动人工突触器件呢?
DP83640芯片和SFP光接口的LOS信号连接方法
双频超声波清洗电源发生器
MATLAB | 这是我见过最离谱的转置操作
CP2102芯片制作USB-串口转换电路
高通骁龙875和三星Exynos 1000即将出来和苹果A14竞争
RT-Thread 4.1.0中POSIX渊源介绍
智能镜子显示屏的体验,给你智能生活的完美享受
探讨几何形状对摩擦功率的影响
鸿蒙操作系统势必会站稳脚跟
小型家用电器220V转5V降压芯片
特斯拉自燃追踪:事发前未进行充电
LC3大会,开源人的狂欢,反哺的力量驱动技术革新
智慧医疗最基本的原则应该是什么
3D打印客机有什么优势
TI最新CC2530ZNP嵌入式ZigBee PRO堆叠的ZigBee网络处理器
盘点13家云计算厂商的RPA的特点与差异点
苹果iPhone标配充电器重要升级:支持USB PD,输出功率达18W