关于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实现的检测web服务器健康状况的小程序
Sep 17 Python
用Python的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
Nov 11 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
Aug 23 Python
Python 实现异步调用函数的示例讲解
Oct 14 Python
python卸载后再次安装遇到的问题解决
Jul 10 Python
Django实现内容缓存实例方法
Jun 30 Python
Python如何将装饰器定义为类
Jul 30 Python
Python logging模块原理解析及应用
Aug 13 Python
Python的flask接收前台的ajax的post数据和get数据的方法
Apr 12 Python
详细介绍python类及类的用法
May 31 Python
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 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/12/06 PHP
php获得url参数中具有&的值的方法
2014/03/05 PHP
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
基于JS实现web端录音与播放功能
2019/04/17 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
2017/11/08 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
美国折扣网站:jClub
2017/08/07 全球购物
西部世纪面试题
2014/12/05 面试题
静态成员和非静态成员的区别
2012/05/12 面试题
入党积极分子思想汇报范文
2014/01/05 职场文书
运动会解说词50字
2014/01/18 职场文书
工艺员岗位职责
2014/02/11 职场文书
致100米运动员广播稿
2014/02/14 职场文书
电视节目策划方案
2014/05/16 职场文书
中小企业员工手册范本
2015/05/14 职场文书
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技