将tf.batch_matmul替换成tf.matmul的实现


Posted in Python onJune 18, 2020

我就废话不多说了,大家还是直接看代码吧~

import tensorflow as tf
h_doc=tf.placeholder(tf.int32,[None,30,512])
h_query=tf.placeholder(tf.int32,[None,10,512])
temp = tf.matmul(h_doc, h_query, adjoint_b = True) # tf.batch_matmul(h_doc, h_query, adj_y=True)
print(temp.get_shape())

(?, 30, 10)

补充知识:tf.matmul() 和tf.multiply() 的区别

1.tf.multiply()两个矩阵中对应元素各自相乘

格式: tf.multiply(x, y, name=None)

参数:

x: 一个类型为:half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128的张量。

y: 一个类型跟张量x相同的张量。

返回值: x * y element-wise.

注意:

(1)multiply这个函数实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘,而不是矩阵乘法,注意和tf.matmul区别。

(2)两个相乘的数必须有相同的数据类型,不然就会报错。

2.tf.matmul()将矩阵a乘以矩阵b,生成a * b。

格式: tf.matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=False, b_is_sparse=False, name=None)

参数:

a: 一个类型为 float16, float32, float64, int32, complex64, complex128 且张量秩 > 1 的张量。

b: 一个类型跟张量a相同的张量。

transpose_a: 如果为真, a则在进行乘法计算前进行转置。

transpose_b: 如果为真, b则在进行乘法计算前进行转置。

adjoint_a: 如果为真, a则在进行乘法计算前进行共轭和转置。

adjoint_b: 如果为真, b则在进行乘法计算前进行共轭和转置。

a_is_sparse: 如果为真, a会被处理为稀疏矩阵。

b_is_sparse: 如果为真, b会被处理为稀疏矩阵。

name: 操作的名字(可选参数)

返回值: 一个跟张量a和张量b类型一样的张量且最内部矩阵是a和b中的相应矩阵的乘积。

注意:

(1)输入必须是矩阵(或者是张量秩 >2的张量,表示成批的矩阵),并且其在转置之后有相匹配的矩阵尺寸。

(2)两个矩阵必须都是同样的类型,支持的类型如下:float16, float32, float64, int32, complex64, complex128。

引发错误:

ValueError: 如果transpose_a 和 adjoint_a, 或 transpose_b 和 adjoint_b 都被设置为真

程序示例:

将tf.batch_matmul替换成tf.matmul的实现

运行结果:

将tf.batch_matmul替换成tf.matmul的实现

注意:

在TensorFlow的世界里,变量的定义和初始化是分开的,所有关于图变量的赋值和计算都要通过tf.Session的run来进行。想要将所有图变量进行集体初始化时应该使用tf.global_variables_initializer。

以上这篇将tf.batch_matmul替换成tf.matmul的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用PyFetion来发送短信的例子
Apr 22 Python
跟老齐学Python之深入变量和引用对象
Sep 24 Python
Python re模块介绍
Nov 30 Python
在Python中使用base64模块处理字符编码的教程
Apr 28 Python
python定时器(Timer)用法简单实例
Jun 04 Python
简单谈谈python中的多进程
Nov 06 Python
浅述python中argsort()函数的实例用法
Mar 30 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
用Python实现大文本文件切割的方法
Jan 12 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
Feb 19 Python
Python如何在windows环境安装pip及rarfile
Jun 15 Python
Python使用windows设置定时执行脚本
Nov 12 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
python属于软件吗
Jun 18 #Python
python交互模式基础知识点学习
Jun 18 #Python
You might like
php二维数组转成字符串示例
2014/02/17 PHP
php生成html文件方法总结
2014/12/01 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
JavaScript 题型问答有答案参考
2010/02/17 Javascript
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
Python标准库之sqlite3使用实例
2014/11/25 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
python爬虫容易学吗
2020/06/02 Python
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
保安的辞职报告怎么写
2014/01/20 职场文书
个人党性剖析材料
2014/02/03 职场文书
在校大学生个人的自我评价
2014/02/13 职场文书
综艺节目策划方案
2014/06/13 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL