python三维矩阵乘法_tensorflow 二维矩阵乘以三维矩阵,高维矩阵相乘
最近看论文时看到了一个让我费解的操作。
二维矩阵 * 三维矩阵 * 二维矩阵 得到了一个二维矩阵。
即:
(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 二维矩阵乘以三维矩阵,高维矩阵相乘相关推荐
- 二维张量 乘以 三维张量_通量vs张量流误解
二维张量 乘以 三维张量 TensorFlow is the 800-pound Gorilla of Machine Learning that almost everybody in the fi ...
- 【C语言】矩阵乘法(二维数组)
编写程序,实现矩阵乘法.计算两个矩阵A和B的乘积.输入要求:第一行三个正整数m.p和n,0<=m,n,p<=10,表示矩阵A是m行p列,矩阵B是p行n列:接下来的m行是矩阵A的内容,每行p ...
- [Python] 散点图(二维散点图、三维散点图、散点图矩阵)
目录 1 两主特征:二维散点图 1.1 二维散点图 1.2 二维分类散点图 1.3 气泡图 2 三主特征:三维散点图 2.1 三维散点图 2.2 三维分类散点图 3 多主特征:二维散点图矩阵 3.1 ...
- 【Python】函数图像绘制:二维图像、三维图像、散点图、心形图
[Python]函数图像绘制:二维图像.三维图像.散点图.心形图 所有需要用的包 二维图像 三维图像 散点图绘制 心形图绘制 所有需要用的包 from mpl_toolkits.mplot3d imp ...
- Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化
Python使用tsne进行高维数据可视化实战:二维可视化.三维可视化 # 绘制二维可视化图像并添加标签字符函数 def plot_embedding(data, label, title):x_mi ...
- openCV图像矩阵Mat和二维数组的互相转换
openCV图像矩阵Mat和二维数组的互相转换 在openCV的应用中,我们获取图像的矩阵信息很简单.但是我们可能想调用其他的矩阵运算库(比如Eigen库)来进行计算.那么我们就需要把openCV读取 ...
- python二维图颜色函数_Python绘图之二维图与三维图详解
各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"持久男" 1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. import ...
- python二维列表的展开_python将三维数组展开成二维数组的实现
这篇文章尝试用"曲线救国"的方法来解决二维数组叠加成三维数组的问题. 但天道有轮回,苍天绕过谁.好不容易把数组叠加在一块儿了,新的需求又出现了:将三维数组展开成二维数组.有借有还, ...
- Python 三维数组转化为二维数组 和MATLAB的reshape函数结果一致
最近在把Matlab的toolbox转到Python语言,涉及到了很多矩阵运算,经常会用到Matlab中的reshape函数,但是Python和它reshape的结果总不一致,导致我最后Python画 ...
最新文章
- IDEA导入多层父子maven项目
- 有个名字叫随便乱记——css3
- VS Code——Live Server的简介、安装与使用
- 定时自动启动任务crontab命令用法
- 产品经理如果有捷径,那可能是多读书
- 2020 年软件开发趋势预测!
- jave导出mysql_java导出mysql数据到excel(poi)
- java 利用时间生成主键
- 数据中心机房建设项目技术方案
- 用phpstudy安装DVWA
- 解决office 2019打开word、excel慢的问题
- formula 返回list_如何在Hibernate / JPA中使用@Formula
- 常见设计模式实现、详解及在Spring中的应用
- 苹果手机怎么用计算机隐藏应用,iPhone计算器魔术 iPhone计算器隐藏功能
- 开学季适合学生党的蓝牙耳机,音质好的蓝牙耳机排行
- 内网穿透--五分钟完成搭建(从零开始)
- Ubuntu16.04安装搜狗输入法的正确姿势
- 王者荣耀服务器什么时候增加人数,王者荣耀正式服凌晨更新,新增几个细节改动...
- 【JavaSE】面向对象编程
- Excel函数——Rank函数快速得到历年各省排名