最近看论文时看到了一个让我费解的操作。

二维矩阵 * 三维矩阵 * 二维矩阵 得到了一个二维矩阵。

即:

(n * c1) x (m * c1 * c2) x (n * c2) 得 n * m

实现主要参考的是tensorflow的matmul运算对于高维矩阵的乘法支持batch的操作,只要保证高维矩阵最后两维之前的维度一样就可以。直接上例子比较直观。

import tensorflow as tf

g = tf.Graph()

with g.as_default():

x = tf.ones([2, 3, 1], dtype=tf.float32)

y = tf.ones([2, 1, 4], dtype=tf.float32)

z = tf.matmul(x, y)

p = tf.ones([2, 3, 1, 5], dtype=tf.float32)

q = tf.ones([2, 3, 5, 6], dtype=tf.float32)

r = tf.matmul(p, q)

with tf.compat.v1.Session(graph=g) as sess:

print(sess.run(z).shape) # (2, 3, 4)

print(sess.run(r).shape) # (2, 3, 1, 6)

比较让我震惊的是在tensorflow2.0版本可以按下面计算,当然这样计算比较符合理想化结果,例子中就是300个二维矩阵分别跟一个二维矩阵去乘。

numpy和torch也是支持这样计算的,但是numpy的结果的维度有所不同。

import tensorflow as tf

g = tf.Graph()

with g.as_default():

a = tf.ones([2, 3], dtype=tf.float32)

b = tf.ones([300, 3, 6], dtype=tf.float32)

d = tf.matmul(a, b) # (300,2,6),这一步2.0版本能够运行令人费解

d = tf.transpose(d, [1, 0, 2]) # d:(2,300,6)

c = tf.ones([2, 6, 1], dtype=tf.float32) # 原本c应该是(2,6)

e = tf.matmul(d, c) # e:(2,300,1)

e = tf.reshape(e, [2, 300])

with tf.compat.v1.Session(graph=g) as sess:

print(sess.run(e).shape)

# print(sess.run(d).shape)

tensorflow1.0版本不可以按上述计算,在第一个matmul的时候必须要将b reshape一下,具体计算可以参考:

https://blog.csdn.net/weixin_41024483/article/details/88536662

python三维矩阵乘法_tensorflow 二维矩阵乘以三维矩阵,高维矩阵相乘相关推荐

  1. 二维张量 乘以 三维张量_通量vs张量流误解

    二维张量 乘以 三维张量 TensorFlow is the 800-pound Gorilla of Machine Learning that almost everybody in the fi ...

  2. 【C语言】矩阵乘法(二维数组)

    编写程序,实现矩阵乘法.计算两个矩阵A和B的乘积.输入要求:第一行三个正整数m.p和n,0<=m,n,p<=10,表示矩阵A是m行p列,矩阵B是p行n列:接下来的m行是矩阵A的内容,每行p ...

  3. [Python] 散点图(二维散点图、三维散点图、散点图矩阵)

    目录 1 两主特征:二维散点图 1.1 二维散点图 1.2 二维分类散点图 1.3 气泡图 2 三主特征:三维散点图 2.1 三维散点图 2.2 三维分类散点图 3 多主特征:二维散点图矩阵 3.1 ...

  4. 【Python】函数图像绘制:二维图像、三维图像、散点图、心形图

    [Python]函数图像绘制:二维图像.三维图像.散点图.心形图 所有需要用的包 二维图像 三维图像 散点图绘制 心形图绘制 所有需要用的包 from mpl_toolkits.mplot3d imp ...

  5. Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化

    Python使用tsne进行高维数据可视化实战:二维可视化.三维可视化 # 绘制二维可视化图像并添加标签字符函数 def plot_embedding(data, label, title):x_mi ...

  6. openCV图像矩阵Mat和二维数组的互相转换

    openCV图像矩阵Mat和二维数组的互相转换 在openCV的应用中,我们获取图像的矩阵信息很简单.但是我们可能想调用其他的矩阵运算库(比如Eigen库)来进行计算.那么我们就需要把openCV读取 ...

  7. python二维图颜色函数_Python绘图之二维图与三维图详解

    各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"持久男" 1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. import ...

  8. python二维列表的展开_python将三维数组展开成二维数组的实现

    这篇文章尝试用"曲线救国"的方法来解决二维数组叠加成三维数组的问题. 但天道有轮回,苍天绕过谁.好不容易把数组叠加在一块儿了,新的需求又出现了:将三维数组展开成二维数组.有借有还, ...

  9. Python 三维数组转化为二维数组 和MATLAB的reshape函数结果一致

    最近在把Matlab的toolbox转到Python语言,涉及到了很多矩阵运算,经常会用到Matlab中的reshape函数,但是Python和它reshape的结果总不一致,导致我最后Python画 ...

最新文章

  1. IDEA导入多层父子maven项目
  2. 有个名字叫随便乱记——css3
  3. VS Code——Live Server的简介、安装与使用
  4. 定时自动启动任务crontab命令用法
  5. 产品经理如果有捷径,那可能是多读书
  6. 2020 年软件开发趋势预测!
  7. jave导出mysql_java导出mysql数据到excel(poi)
  8. java 利用时间生成主键
  9. 数据中心机房建设项目技术方案
  10. 用phpstudy安装DVWA
  11. 解决office 2019打开word、excel慢的问题
  12. formula 返回list_如何在Hibernate / JPA中使用@Formula
  13. 常见设计模式实现、详解及在Spring中的应用
  14. 苹果手机怎么用计算机隐藏应用,iPhone计算器魔术 iPhone计算器隐藏功能
  15. 开学季适合学生党的蓝牙耳机,音质好的蓝牙耳机排行
  16. 内网穿透--五分钟完成搭建(从零开始)
  17. Ubuntu16.04安装搜狗输入法的正确姿势
  18. 王者荣耀服务器什么时候增加人数,王者荣耀正式服凌晨更新,新增几个细节改动...
  19. 【JavaSE】面向对象编程
  20. Excel函数——Rank函数快速得到历年各省排名

热门文章

  1. mysql数据库常见错误及解决方法
  2. 【单细胞高级绘图】10.KEGG富集结果的圆圈图
  3. Golang字符串拼接
  4. matlab fpga 移植,使用MATLAB,Simulink以及基于模型的设计实现把电机控制算法移植到Zynq平台...
  5. python获取邮件并转为pdf
  6. 解读:大硕德乡饮耆宾贠尚忠翁芳行碑
  7. opensips代码分析
  8. navicat连接服务器mysql,mysql外网连接
  9. 拼多多Q3GMV同比增长386%,超同行平均增速15倍
  10. 责任链模式实践之Zuul责任链模式