tf.matmul() 和tf.multiply() 的区别以及怎么理解三维数组的shape含义

tf.matmul()是常见的矩阵相乘运算,而tf.multiply()则是两个矩阵中对应元素的相乘运算。

具体用法:

  1. multiply 等同与* ,用于计算矩阵之间的element-wise 乘法,要求矩阵的形状必须一致(或者是其中一个维度为1),否则会报错.

  2. matmul 是tensor的矩阵乘法, 参与运算的两个tensor维度、数据类型必须一致,
    参与运算的是最后两维形成的矩阵,如果tensor是二维矩阵,则等同于矩阵乘法.

代码示例

import tensorflow as tf
a = tf.constant([1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12], shape=[2, 3, 2])
b = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3, 1])
c = a*b 
with tf.Session():
    print(a.eval())
    print(b.eval())
    print(c.eval())
    

输出为:

>> a
[[[ 1  2]
  [ 3  4]
  [ 5  6]]
 
 [[ 7  8]
  [ 9 10]
  [11 12]]]
>>b
[[[1]
  [2]
  [3]]
 
 [[4]
  [5]
  [6]]]
>>c
[[[ 1  2]
  [ 6  8]
  [15 18]]
 
 [[28 32]
  [45 50]
  [66 72]]]

可见c的shape是[2,3,2]。

既然提到这了,就顺便说一下怎么理解三维数组的shape吧。

像shape=[a,b,c],就可以理解为底面积是[b,c],高是a,更准确的理解这个数组共是a页,每一页都有一个b行c列的二维数组,可以说a个b*c的二维数组构成了这个[a,b,c]的三维数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值