将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用GET方法上传文件
Mar 10 Python
Python多维/嵌套字典数据无限遍历的实现
Nov 04 Python
python 寻找list中最大元素对应的索引方法
Jun 28 Python
python中ASCII码和字符的转换方法
Jul 09 Python
Python-Seaborn热图绘制的实现方法
Jul 15 Python
python函数不定长参数使用方法解析
Dec 14 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
python中68个内置函数的总结与介绍
Feb 24 Python
在Keras中实现保存和加载权重及模型结构
Jun 15 Python
python中查看.db文件中表格的名字及表格中的字段操作
Jul 07 Python
python super()函数的基本使用
Sep 10 Python
pandas map(),apply(),applymap()区别解析
Feb 24 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
php SQL Injection with MySQL
2011/02/27 PHP
Prototype源码浅析 Number部分
2012/01/16 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
javascript实现循环广告条效果
2017/12/12 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
Django 拆分model和view的实现方法
2019/08/16 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
控制工程专业个人求职信
2013/09/25 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
军校大学生个人的自我评价
2014/02/17 职场文书
单位委托书
2014/10/15 职场文书
2014年体育部工作总结
2014/11/13 职场文书
师德先进个人材料
2014/12/20 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记
世界十大狙击步枪排行榜
2022/03/20 杂记
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers