关于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简单日志处理类分享
Feb 14 Python
利用Fn.py库在Python中进行函数式编程
Apr 22 Python
实例讲解Python中SocketServer模块处理网络请求的用法
Jun 28 Python
对django 模型 unique together的示例讲解
Aug 06 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
Django更新models数据库结构步骤
Apr 01 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
OpenCV+python实现实时目标检测功能
Jun 24 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
python 使用递归的方式实现语义图片分割功能
Jul 16 Python
Window10上Tensorflow的安装(CPU和GPU版本)
Dec 15 Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
php 发送带附件邮件示例
2014/01/23 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
Avengerls vs Newbee BO3 第二场2.18
2021/03/10 DOTA
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
jQuery 中使用JSON的实现代码
2011/12/01 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
Node.js编写组件的三种实现方式
2016/02/25 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
python检测是文件还是目录的方法
2015/07/03 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
转预备党员政审材料
2014/02/06 职场文书
党校学习自我鉴定
2014/02/24 职场文书
班级年度安全计划书
2014/05/01 职场文书
小学先进集体事迹材料
2014/05/31 职场文书
机械工程师岗位职责
2014/06/16 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
出生证明格式
2015/06/15 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python