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

作者:guotong1988 时间:2021-03-25 03:35:43 

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


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。

来源:https://blog.csdn.net/guotong1988/article/details/77622078

标签:tf.batch,matmul,tf.matmul
0
投稿

猜你喜欢

  • python实现简单通讯录管理系统

    2021-05-02 10:41:23
  • 如何设置PyCharm中的Python代码模版(推荐)

    2022-12-14 03:56:29
  • ASP将Excel数据导入到SQLServer的实现代码

    2011-03-10 10:38:00
  • Python基于jieba库进行简单分词及词云功能实现方法

    2023-03-21 16:28:47
  • Python中关键字nonlocal和global的声明与解析

    2023-08-01 13:11:10
  • Windows下python3安装tkinter的问题及解决方法

    2023-03-30 11:45:31
  • Python全栈之进程和守护进程

    2021-11-25 18:05:44
  • 用Python定时发送天气邮件

    2022-09-22 15:11:31
  • Python Gitlab Api 使用方法

    2021-03-11 16:30:11
  • python语法学习print中f-string用法示例

    2021-01-08 11:11:24
  • 简单介绍各种浏览器中的本地存储方法

    2012-04-26 16:37:34
  • pandas将多个dataframe以多个sheet的形式保存到一个excel文件中

    2022-11-06 02:24:01
  • Python 字符串与数字输出方法

    2021-09-01 09:01:59
  • 全国哀悼日 建议站点换素装(附代码)

    2008-05-19 12:05:00
  • Python 中数组和数字相乘时的注意事项说明

    2023-02-15 19:38:48
  • js弹出新窗口而不会被浏览器阻止的方法

    2010-04-06 12:38:00
  • 以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法

    2022-02-15 19:11:48
  • MySQL字符集查看方法

    2010-12-14 15:14:00
  • python单元测试unittest实例详解

    2023-10-16 08:26:49
  • Python matplotlib实现折线图的绘制

    2022-05-03 11:14:58
  • asp之家 网络编程 m.aspxhome.com