关于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实现遍历windows所有窗口并输出窗口标题的方法
Mar 13 Python
分享6个隐藏的python功能
Dec 07 Python
python画出三角形外接圆和内切圆的方法
Jan 25 Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 Python
python中比较两个列表的实例方法
Jul 04 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
python使用minimax算法实现五子棋
Jul 29 Python
python用线性回归预测股票价格的实现代码
Sep 04 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
Python调用jar包方法实现过程解析
Aug 11 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 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 COOKIE及时生效的方法介绍
2014/02/14 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
vue循环中点击选中再点击取消(单选)的实现
2020/09/10 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
Python 不同对象比较大小示例探讨
2014/08/21 Python
Python中获取网页状态码的两个方法
2014/11/03 Python
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
python实现键盘控制鼠标移动
2020/11/27 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
Python编程中类与类的关系详解
2019/08/08 Python
Python pandas库中的isnull()详解
2019/12/26 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
基于python3生成标签云代码解析
2020/02/18 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
一份报关员的职业规划范文
2014/01/08 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
2014年施工员工作总结
2014/11/18 职场文书
导游词开场白
2015/01/31 职场文书
出国留学单位推荐信
2015/03/26 职场文书
会计岗位工作总结
2015/08/12 职场文书