码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • t-product的matlab实现


    t-product是一个比较好的概念,相对应于矩阵中的乘法。

    定义如下

    这里的 circ(A),MatVec(b) 的定义分别如下

    这么定义的原因是为了映射到FFT域里面去,简化计算。

    上面的一段摘录说明:直接按照定义来计算,会耗费大量的计算资源。因此,实际使用中是应用的另外一种方法“FFT”.

    这两个等式是相等的,因为下面的公式其实施加了FFT变换之后又做了逆变换。注意发现上面的等式很有意思,结合文字好好看一下就有下面的计算方式。

    计算方式

    简单的说, A∗B 的过程如下

    1. 先把 A,B 模三展开,对每一个切片分别施加FFT, A¯(i),B¯(i)
    2. 切片对应相乘, A¯(i)∗B¯(i)
    3. 折叠回张量。

    具体的原理,只知道可以这么做。具体理论分析,等待后续的知识(也在这篇论文上)。

    Matlab代码实现

    1. function C = tprod(A, B)
    2. % tensor-tensor product of two 3-order tensors : C = A * B
    3. % compute in the Fourier domain, efficiently
    4. % A - n1 x n2 x n3 tensor
    5. % B - n2 x l x n3 tensor
    6. % C - n1 x l x n3 tensor
    7. [n1, ~, n3] = size(A);
    8. l = size(B, 2);
    9. Af = fft(A, [], 3);
    10. Bf = fft(B, [], 3);
    11. Cf = zeros(n1, l, n3);
    12. for i = 1 : n3
    13. Cf(:, :, i) = Af(:, :, i) * Bf(:, :, i);
    14. end
    15. C = ifft(Cf, [], 3);
    16. end
    fft(A,[],3)是标准的三阶张量沿模三做FFT的matlab操作.不必理会。

    一个模拟数据验证

    1. clc
    2. clear all
    3. %如何计算两个张量的t-product
    4. X1 = 1:12;
    5. X1 = reshape(X1,[3,4]);
    6. X2 = 13:24;
    7. X2 = reshape(X2,[3,4]);
    8. X(:,:,1) = X1;
    9. X(:,:,2) = X2;
    10. Y1 = ones(4,3);
    11. Y2 = ones(4,3);
    12. Y(:,:,1) = Y1;
    13. Y(:,:,2) = Y2;
    14. C = tprod(X,Y)
    15. C1 = X1*Y1 + X2*Y2
    16. C2 = X2*Y1 + X1*Y2

    结果如下

    1. C
    2. C(:,:,1) =
    3. 92 92 92
    4. 100 100 100
    5. 108 108 108
    6. C(:,:,2) =
    7. 92 92 92
    8. 100 100 100
    9. 108 108 108
    10. C1 =
    11. 92 92 92
    12. 100 100 100
    13. 108 108 108
    14. C2 =
    15. 92 92 92
    16. 100 100 100
    17. 108 108 108

    总结

    简单的记录一下,免的遗忘。

    参考文献:Factorization strategies for third-order tensors
  • 相关阅读:
    发现一个开源项目优化点,点进来就是你的了
    基于SpringBoot的校园交友网站
    海栎创原厂HAA9806和HAA9806-R连续10W输出功率的单声道音频功率放大器
    【卷王秘籍】学了三遍操作系统后,榨干知识点,让面试官自闭!
    使用 js 动态修改在线 svg 背景色
    三农数据(1996-2020)十:农林牧渔业总产值、分项产值、各种农作物播种面积
    前端面试题集锦(3)
    程序员过中秋的一百种方式
    Linux: vi 编辑器
    新移动时代内容制作呈现与开发利器-Zoomla!逐浪CMS v8.6.2发布
  • 原文地址:https://blog.csdn.net/m0_69824302/article/details/134451020
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号