将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
投稿

猜你喜欢

  • 用ASP生成XBM数字图片验证码

    2008-08-10 18:40:00
  • python树莓派红外反射传感器

    2022-12-05 16:11:47
  • Python环境配置实现pip加速过程解析

    2022-09-23 12:42:37
  • MySql 8.0及对应驱动包匹配的注意点说明

    2024-01-24 02:57:11
  • Python GUI库Tkiner使用方法代码示例

    2022-03-26 04:51:29
  • python如何获得list或numpy数组中最大元素对应的索引

    2021-02-10 11:30:12
  • 文章关键字替换带链接需要注意的两个问题

    2010-02-25 12:18:00
  • JavaScript实现同步于本地时间的动态时间显示方法

    2024-05-11 09:33:19
  • java连接mysql数据库 java连接sql server数据库

    2023-07-16 06:56:50
  • 简述Python2与Python3的不同点

    2023-03-25 10:22:10
  • 简洁js的隔行变色代码

    2008-06-18 18:17:00
  • Python PaddleNLP开源实现快递单信息抽取

    2023-01-21 04:35:11
  • python使用opencv驱动摄像头的方法

    2023-08-26 17:00:49
  • python linecache读取行更新的实现

    2021-01-26 01:33:06
  • python bluetooth蓝牙信息获取蓝牙设备类型的方法

    2023-08-23 00:57:16
  • JS生成一维码(条形码)功能示例

    2024-04-26 17:12:30
  • python使用matplotlib的savefig保存时图片保存不完整的问题

    2021-07-04 11:50:22
  • 解决Python安装后pip不能用的问题

    2023-05-10 04:52:14
  • python 求定积分和不定积分示例

    2021-06-15 02:17:39
  • 解决pyCharm中 module 调用失败的问题

    2022-11-27 23:21:19
  • asp之家 网络编程 m.aspxhome.com