关于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实现
Jan 28 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
Apr 11 Python
Python使用pyh生成HTML文档的方法示例
Mar 10 Python
python中验证码连通域分割的方法详解
Jun 04 Python
python生成密码字典的方法
Jul 06 Python
Python爬虫文件下载图文教程
Dec 23 Python
python 修改本地网络配置的方法
Aug 14 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
python中remove函数的踩坑记录
Jan 04 Python
python中pycryto实现数据加密
Apr 29 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
重置版战役片段
2020/04/09 魔兽争霸
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
JS继承 笔记
2011/07/13 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
js获取指定日期前后的日期代码
2013/08/20 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
JavaScript中0和""比较引发的问题
2016/05/26 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
PyQt5每天必学之单行文本框
2018/04/19 Python
numpy返回array中元素的index方法
2018/06/27 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
开放系统互连参考模型
2016/06/29 面试题
庆元旦文艺演出主持词
2014/03/27 职场文书
中学生评语大全
2014/04/18 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
个人求职信格式范文
2015/03/20 职场文书
厉行节约工作总结
2015/08/12 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js