关于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实现将16进制字符串转化为ascii字符的方法分析
Jul 21 Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 Python
Python中实现switch功能实例解析
Jan 11 Python
python删除服务器文件代码示例
Feb 09 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
Django添加sitemap的方法示例
Aug 06 Python
在python中pandas的series合并方法
Nov 12 Python
python实现对任意大小图片均匀切割的示例
Dec 05 Python
python制作填词游戏步骤详解
May 05 Python
git查看、创建、删除、本地、远程分支方法详解
Feb 18 Python
Python类super()及私有属性原理解析
Jun 15 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 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 GD 图像处理组件的常用函数总结
2010/04/28 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
pm2启动ssr失败的解决方法
2019/06/29 Javascript
vue中activated的用法
2021/01/03 Vue.js
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
在Python中使用模块的教程
2015/04/27 Python
Python中类型检查的详细介绍
2017/02/13 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
学python安装的软件总结
2019/10/12 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
使用Pycharm分段执行代码
2020/04/15 Python
零基础学python应该从哪里入手
2020/08/11 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
2014大学生全国两会学习心得体会
2014/03/13 职场文书
文明城市创建标语
2014/06/16 职场文书
HR求职自荐信范文
2014/06/21 职场文书
财务审计整改报告
2014/11/06 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
公司清洁工岗位职责
2015/04/15 职场文书
暂停营业通知
2015/04/25 职场文书