关于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 16 Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
python中 * 的用法详解
Jul 10 Python
python字典嵌套字典的情况下找到某个key的value详解
Jul 10 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
Jul 31 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
python递归函数用法详解
Oct 26 Python
python区块链持久化和命令行接口实现简版
May 25 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
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
apache配置虚拟主机的方法详解
2013/06/17 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
自己写的Javascript计算时间差函数
2013/10/28 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
详解小程序横屏方案对比
2020/06/28 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
tensorflow训练中出现nan问题的解决
2018/02/10 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
Django中create和save方法的不同
2019/08/13 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
前台文员我鉴定
2014/01/12 职场文书
销售简历自我评价
2014/01/24 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
会计专业自我评价
2014/02/12 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
授权委托书样本
2014/09/25 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
质量负责人岗位职责
2015/02/15 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
Redis keys命令的具体使用
2022/06/05 Redis