关于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群发邮件实例代码
Jan 03 Python
Python 模板引擎的注入问题分析
Jan 01 Python
zookeeper python接口实例详解
Jan 18 Python
django初始化数据库的实例
May 27 Python
详解python中的装饰器
Jul 10 Python
在cmder下安装ipython以及环境的搭建
Oct 19 Python
Python一个简单的通信程序(客户端 服务器)
Mar 06 Python
Python常用特殊方法实例总结
Mar 22 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
python模块常用用法实例详解
Oct 17 Python
python @propert装饰器使用方法原理解析
Dec 25 Python
Python获取excel内容及相关操作代码实例
Aug 10 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学习之字符串比较和查找
2011/04/17 PHP
javascript void(0)的妙用
2009/10/21 Javascript
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
简单说明Python中的装饰器的用法
2015/04/24 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
Python requests模块实例用法
2019/02/11 Python
python实现合并两个排序的链表
2019/03/03 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
详解Python绘图Turtle库
2019/10/12 Python
基于python中__add__函数的用法
2019/11/25 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
苹果音乐订阅:Apple Music
2018/08/02 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
安全生产知识竞赛活动总结
2014/07/07 职场文书
班级课外活动总结
2014/07/09 职场文书
小学新课改心得体会
2016/01/22 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android