关于tf.matmul() 和tf.multiply() 的区别说明


Posted in Python onJune 18, 2020

我就废话不多说了,大家还是直接看代码吧~

flyfish

# a
# [[1, 2, 3],
# [4, 5, 6]] a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])

# b1
# [[ 7, 8],
# [ 9, 10],
# [11, 12]] b1 = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2])

#b2
#[[ 7 8 9]
# [10 11 12]] b2 = tf.constant([7, 8, 9, 10, 11, 12], shape=[2, 3])

# c矩阵相乘 第一个矩阵的列数(column)等于第二个矩阵的行数(row)
# [[ 58, 64],
# [139, 154]] c = tf.matmul(a, b1)

# d`数元素各自相乘
#[[ 7 16 27]
# [40 55 72]] d = tf.multiply(a, b2) #维度必须相等 with tf.Session():
 print(d.eval())

关于其他计算

b3 = tf.constant([7, 8, 9,], shape=[1, 3])
tf.multiply(a, b3)
结果是
[[ 7 16 27]
 [28 40 54]]

b4 = tf.constant([7, 8], shape=[2, 1])
tf.multiply(a, b4)
结果是
[[ 7 14 21]
 [32 40 48]]

b5 = tf.constant([7], shape=[1, 1])
tf.multiply(a, b5)

结果是

[[ 7 14 21]
 [28 35 42]]

补充知识:tensor matmul的对3维张量的处理

torch.matmul(a,b)处理的一般是a和b的最后两个维度,假设a的维度为B*F*M,b也为B*F*M, 在对a,b做相乘操作的时候,需要完成对B的维度顺序的变换,通过permute(0, 2, 1)变换为B*M*F。

通过变换后进行torch.matmul(a,b)得到结果为B*F*F,在除了最后两个维度的的之前维度上都被认为是Batch。

示例1:

>>> import torch
>>> a=torch.rand((1000,5,10))
>>> b=torch.rand((1000,10,12))
>>> c=torch.matmul(a,b)
>>> c.shape
torch.Size([1000, 5, 12])

在处理不同维度时,会通过广播来合并除最后两个维度外的其他维度,如对于A*B*F*M与B*M*F的matmul,结果为A*B*F*F

示例2:

>>> a=torch.rand((50,1000,5,10))
>>> b=torch.rand((1000,10,12))
>>> c=torch.matmul(a,b)
>>> c.shape
torch.Size([50, 1000, 5, 12])

以上这篇关于tf.matmul() 和tf.multiply() 的区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python处理PHP数组文本文件实例
Sep 18 Python
连接Python程序与MySQL的教程
Apr 29 Python
Python中实现三目运算的方法
Jun 21 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
python爬虫的工作原理
Mar 05 Python
PyQt+socket实现远程操作服务器的方法示例
Aug 22 Python
浅析python中while循环和for循环
Nov 19 Python
python pyenv多版本管理工具的使用
Dec 23 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
Apr 22 Python
python能否java成为主流语言吗
Jun 22 Python
Python学习工具jupyter notebook安装及用法解析
Oct 23 Python
Python正则表达式高级使用方法汇总
Jun 18 #Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 #Python
新手常见Python错误及异常解决处理方案
Jun 18 #Python
Python之Matplotlib文字与注释的使用方法
Jun 18 #Python
Matplotlib自定义坐标轴刻度的实现示例
Jun 18 #Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
Jun 18 #Python
PyCharm中配置PySide2的图文教程
Jun 18 #Python
You might like
php获得文件扩展名三法
2006/11/25 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
ASP SQL防注入的方法
2008/12/25 Javascript
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
javascript实现微信分享
2014/12/23 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
babel基本使用详解
2017/02/17 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python 数据结构之堆栈实例代码
2017/01/22 Python
python编写分类决策树的代码
2017/12/21 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
村委会贫困证明
2014/01/14 职场文书
空乘英文求职信
2014/04/13 职场文书
学校督导评估方案
2014/06/10 职场文书
霸气队列口号
2014/06/18 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书
导游词之任弼时故居
2020/01/07 职场文书
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python