关于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对url格式解析的方法
May 13 Python
在Python的Django框架的视图中使用Session的方法
Jul 23 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 Python
浅谈Python中函数的参数传递
Jun 21 Python
Python设计模式之工厂模式简单示例
Jan 09 Python
使用python生成目录树
Mar 29 Python
浅谈python连续赋值可能引发的错误
Nov 10 Python
python使用pdfminer解析pdf文件的方法示例
Dec 20 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 Python
详解python3类型注释annotations实用案例
Jan 20 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
BBS(php & mysql)完整版(四)
2006/10/09 PHP
dedecms模版制作使用方法
2007/04/03 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
php生成随机颜色方法汇总
2014/12/03 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
PHP实现简易计算器功能
2020/08/28 PHP
简单的JS多重继承示例
2008/03/13 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
2015/06/25 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
python图书管理系统
2020/04/05 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
Python线程之定位与销毁的实现
2019/02/17 Python
详解Python中的内建函数,可迭代对象,迭代器
2019/04/29 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
大学生通用个人的自我评价
2014/02/10 职场文书
写给老婆的检讨书
2014/02/21 职场文书
毕业生就业协议书
2014/04/11 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
新年晚会开场白
2015/05/29 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python