Tensorflow二维、三维、四维矩阵运算(矩阵相乘,点乘,行/列累加)

1. 矩阵相乘

根据矩阵相乘的匹配原则,左乘矩阵的列数要等于右乘矩阵的行数。

在多维(三维、四维)矩阵的相乘中,需要最后两维满足匹配原则。

可以将多维矩阵理解成:(矩阵排列,矩阵),即后两维为矩阵,前面的维度为矩阵的排列。

比如对于(2,2,4)来说,视为2个(2,4)矩阵。

对于(2,2,2,4)来说,视为2*2个(2,4)矩阵。

import tensorflow as tf

a_2d = tf.constant([1]*6, shape=[2, 3])

b_2d = tf.constant([2]*12, shape=[3, 4])

c_2d = tf.matmul(a_2d, b_2d)

a_3d = tf.constant([1]*12, shape=[2, 2, 3])

b_3d = tf.constant([2]*24, shape=[2, 3, 4])

c_3d = tf.matmul(a_3d, b_3d)

a_4d = tf.constant([1]*24, shape=[2, 2, 2, 3])

b_4d = tf.constant([2]*48, shape=[2, 2, 3, 4])

c_4d = tf.matmul(a_4d, b_4d)

with tf.Session() as sess:

tf.global_variables_initializer().run()

print("# {}*{}={} \n{}".

format(a_2d.eval().shape, b_2d.eval().shape, c_2d.eval().shape, c_2d.eval()))

print("# {}*{}={} \n{}".

format(a_3d.eval().shape, b_3d.eval().shape, c_3d.eval().shape, c_3d.eval()))

print("# {}*{}={} \n{}".

format(a_4d.eval().shape, b_4d.eval().shape, c_4d.eval().shape, c_4d.eval()))

2. 点乘

点乘指的是shape相同的两个矩阵,对应位置元素相乘,得到一个新的shape相同的矩阵。

a_2d = tf.constant([1]*6, shape=[2, 3])

b_2d = tf.constant([2]*6, shape=[2, 3])

c_2d = tf.multiply(a_2d, b_2d)

a_3d = tf.constant([1]*12, shape=[2, 2, 3])

b_3d = tf.constant([2]*12, shape=[2, 2, 3])

c_3d = tf.multiply(a_3d, b_3d)

a_4d = tf.constant([1]*24, shape=[2, 2, 2, 3])

b_4d = tf.constant([2]*24, shape=[2, 2, 2, 3])

c_4d = tf.multiply(a_4d, b_4d)

with tf.Session() as sess:

tf.global_variables_initializer().run()

print("# {}*{}={} \n{}".

format(a_2d.eval().shape, b_2d.eval().shape, c_2d.eval().shape, c_2d.eval()))

print("# {}*{}={} \n{}".

format(a_3d.eval().shape, b_3d.eval().shape, c_3d.eval().shape, c_3d.eval()))

print("# {}*{}={} \n{}".

format(a_4d.eval().shape, b_4d.eval().shape, c_4d.eval().shape, c_4d.eval()))

另外,点乘的其中一方可以是一个常数,也可以是一个和矩阵行向量等长(即列数)的向量。

因为在点乘过程中,会自动将常数或者向量进行扩维。

a_2d = tf.constant([1]*6, shape=[2, 3])

k = tf.constant(2)

l = tf.constant([2, 3, 4])

b_2d_1 = tf.multiply(k, a_2d) # tf.multiply(a_2d, k) is also ok

b_2d_2 = tf.multiply(l, a_2d) # tf.multiply(a_2d, l) is also ok

a_3d = tf.constant([1]*12, shape=[2, 2, 3])

b_3d_1 = tf.multiply(k, a_3d) # tf.multiply(a_3d, k) is also ok

b_3d_2 = tf.multiply(l, a_3d) # tf.multiply(a_3d, l) is also ok

a_4d = tf.constant([1]*24, shape=[2, 2, 2, 3])

b_4d_1 = tf.multiply(k, a_4d) # tf.multiply(a_4d, k) is also ok

b_4d_2 = tf.multiply(l, a_4d) # tf.multiply(a_4d, l) is also ok

with tf.Session() as sess:

tf.global_variables_initializer().run()

print("# {}*{}={} \n{}".

format(k.eval().shape, a_2d.eval().shape, b_2d_1.eval().shape, b_2d_1.eval()))

print("# {}*{}={} \n{}".

format(l.eval().shape, a_2d.eval().shape, b_2d_2.eval().shape, b_2d_2.eval()))

print("# {}*{}={} \n{}".

format(k.eval().shape, a_3d.eval().shape, b_3d_1.eval().shape, b_3d_1.eval()))

print("# {}*{}={} \n{}".

format(l.eval().shape, a_3d.eval().shape, b_3d_2.eval().shape, b_3d_2.eval()))

print("# {}*{}={} \n{}".

format(k.eval().shape, a_4d.eval().shape, b_4d_1.eval().shape, b_4d_1.eval()))

print("# {}*{}={} \n{}".

format(l.eval().shape, a_4d.eval().shape, b_4d_2.eval().shape, b_4d_2.eval()))

4. 行/列累加

a_2d = tf.constant([1]*6, shape=[2, 3])

d_2d_1 = tf.reduce_sum(a_2d, axis=0)

d_2d_2 = tf.reduce_sum(a_2d, axis=1)

a_3d = tf.constant([1]*12, shape=[2, 2, 3])

d_3d_1 = tf.reduce_sum(a_3d, axis=1)

d_3d_2 = tf.reduce_sum(a_3d, axis=2)

a_4d = tf.constant([1]*24, shape=[2, 2, 2, 3])

d_4d_1 = tf.reduce_sum(a_4d, axis=2)

d_4d_2 = tf.reduce_sum(a_4d, axis=3)

with tf.Session() as sess:

tf.global_variables_initializer().run()

print("# a_2d 行累加得到shape:{}\n{}".format(d_2d_1.eval().shape, d_2d_1.eval()))

print("# a_2d 列累加得到shape:{}\n{}".format(d_2d_2.eval().shape, d_2d_2.eval()))

print("# a_3d 行累加得到shape:{}\n{}".format(d_3d_1.eval().shape, d_3d_1.eval()))

print("# a_3d 列累加得到shape:{}\n{}".format(d_3d_2.eval().shape, d_3d_2.eval()))

print("# a_4d 行累加得到shape:{}\n{}".format(d_4d_1.eval().shape, d_4d_1.eval()))

print("# a_4d 列累加得到shape:{}\n{}".format(d_4d_2.eval().shape, d_4d_2.eval()))

以上这篇Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)

本文地址: http://www.cppcns.com/jiaoben/python/299630.html

python矩阵乘法 点乘_Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)相关推荐

  1. python 多线程并行 矩阵乘法_python实现简单的并行矩阵乘法

    python实现简单的并行矩阵乘法 python实现简单的并行矩阵乘法 本文采用的矩阵乘法方式是利用一个矩阵的行和二个矩阵的列相乘时不会互相影响.假设A(m,n)表示矩阵的m行,n列.那么C(m,m) ...

  2. MATLAB矩阵乘法为什么快,为什么MATLAB在矩阵乘法中如此之快?

    reverse_engi.. 163 这种问题反复出现,应该比Stackoverflow上的"Matlab使用高度优化的库"或"Matlab使用MKL"一次更清 ...

  3. 两个3×3矩阵乘法例题_两个3×3矩阵相乘 三个矩阵相乘从左向右算还是从右算起...

    两个三乘三矩阵相乘怎么算,在线等 设A为m*p的矩阵,B为p*n的矩阵,那么称m*n的矩阵C为矩阵A与B的乘积,记作C=AB ,其中矩阵C中的第i行第j列元素可以表示为: 例如: 扩展资料: 注意事项 ...

  4. [转]如何理解矩阵乘法的规则(两个矩阵相乘法则的推导,从对方程组解方程演化而来)

    [转]如何理解矩阵乘法的规则 转自(http://news.cnblogs.com/n/528288/) 我加入了自己的理解. 作者: 阮一峰 大多数人在高中,或者大学低年级,都上过一门课<线性 ...

  5. mpi大规模矩阵乘法C语言,MPI多进程并行计算矩阵乘法实现

    MPI多进程并行计算矩阵乘法实现,对原始矩阵A.B进行初始化算为: 其主要思想:是把相乘的矩阵按行分解(任务分解),分别分给不同的进程,然后在汇总到一个进程上,在程序上实现则用到了主从模式,人为的把进 ...

  6. python矩阵乘法分治_分治法实现矩阵乘法

    #include #include #include #include using namespace std; int *InitMatrix(int row,int col);//初始化 void ...

  7. c语言mpi矩阵乘法,【MPI并行程序】矩阵乘法

    具体思路为创建矩阵,给每个进程分配矩阵的不同部分,每个进程根据进程号的不同处理矩阵的不同部分,计算完成后将每个进程的数组发送给一个特定的进程,由该进程合成一个完整的矩阵输出出来.问题是不一定每个进程都 ...

  8. c语言 4x4矩阵乘法,C中的快速4x4矩阵乘法

    我试图找到一个函数的优化C或汇编实现,该函数将两个4x4矩阵相乘.平台是基于ARM6或ARM7的iPhone或iPod. 目前,我使用的是一种相当标准的方法--只是展开一个小循环. #define O ...

  9. 向量、矩阵乘法的几何意义(二) 矩阵乘法(Matrix Multiplication)

    一.             旋转( rotation ) 1.   矩阵与向量相乘 由向量内积(两个向量相乘)出发,考虑矩阵与向量相乘的情况.以二维平面空间为例,设X=(x1, x2, -, xn) ...

最新文章

  1. matlab自适应逆控制,基于matlab仿真模块的自适应有源噪声逆控制研究
  2. ADO.NET复习总结(5)--工具类SqlHelper 实现登录
  3. 2016.07.13-vectorvectorint应用2——Two Sum扩展
  4. HEAD detached from XXXX解决方法
  5. php禁用了所有命令执行的函数 怎么搞,PHP通过bypass disable functions执行系统命令的方法汇总...
  6. Elasticsearch2.x Breaking changes
  7. 在asp.net中如何自己编写highcharts图表导出到自己的服务器上来
  8. SVN使用和解决方案
  9. linux 不可中断的进程,不可中断进程和僵尸进程
  10. Python3操作mysql操作类
  11. js 子窗口关闭并且刷新父窗口
  12. pt-query-digest查询日志分析工具
  13. tftp的安装、设置以及put、get传输实验
  14. tensorflow object detection api graph rewriter
  15. win10cmd重置系统_win10怎么重置电脑 win10重置此电脑的方法【图文】
  16. java des 加密 js 解密_js 实现DES加密解密
  17. ArcPad 8 简介
  18. Redis安装与开机启动
  19. DSP Bootloader说明
  20. Python正则提取

热门文章

  1. python英语单词 扇贝英语安卓下载_扇贝单词英语版
  2. rufus 装windows11 系统 z790 msi 主板
  3. Ubuntu系统键盘背光灯不亮解决办法
  4. 计算机网络技术基础 阚宝明,计算机网络技术基础阚宝明答案
  5. C语言飞机大战程序思路,C语言代码实现飞机大战
  6. html中p元素添加超链接_如何在HTML中添加超链接
  7. python类计算器开发_开发一个简单的python计算器
  8. 苏格兰研发成功新型治疗结核病药物
  9. Allegro PCB Design GXL (legacy) 16.6 - 使用泪滴之后,删除泪滴导致出现的异常
  10. vue-fullcalendar 日历插件