pytorch几种乘法的区别

pytorch几种乘法的区别

torch.mul()是矩阵的点乘,即对应的位相乘,要求shape一样, 返回的还是个矩阵
torch.mm()是矩阵正常的矩阵相乘,(a, b)* ( b, c ) = ( a, c )
torch.dot()类似于mul(),它是向量(即只能是一维的张量)的对应位相乘再求和,返回一个tensor数值
torch.mv()是矩阵和向量相乘,类似于torch.mm()

np.dot(x,y)

如果x,y都是一维张量,那么np.dot(x,y)是 ∑ i = 0 m x i y i \sum_{i=0}^{m}x_i y_i i=0mxiyi

矩阵乘和向量乘

矩阵乘法符号说明
matrix product·一般矩阵乘法
哈达玛积⊙或○逐元素对应相乘
克罗内克积$ \otimes $A的每个元素逐个与B矩阵相乘
向量乘法符号说明
内积 点积·逐元素对应相乘之积的和 结果为标量
外积$ \otimes $结果为矩阵
叉乘Cross Product×结果为向量
点积

点积是两个矩阵相同位置的 按元素乘积的 和

点乘的几何意义:点乘可以用来计算两个向量的夹角

x = tf.constant([0., 1., 2., 3.])
y= tf.ones(4)
# 1  
tf.tensordot(x, y, axes=1)

<tf.Tensor: shape=(), dtype=float32, numpy=6.0>
# 2  我们可以通过执行按元素乘法,然后进行求和来表示两个向量的点积:
tf.reduce_sum(x * y)

<tf.Tensor: shape=(), dtype=float32, numpy=6.0>
矩阵-向量积

一个矩阵乘一个列向量 相当于 矩阵的列向量的线性组合

一个行向量 乘以矩阵 相当于矩阵的行向量的线性组合

B.shape, C.shape, tf.linalg.matvec(C,B)

(TensorShape([3, 4]),
 TensorShape([4]),
 <tf.Tensor: shape=(3,), dtype=float64, numpy=array([23., 23., 17.])>)

矩阵-矩阵乘法

一般矩阵乘法

A,B,tf.matmul(A,B) 

<tf.Tensor: shape=(3, 4), dtype=float64, numpy=
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])>

<tf.Tensor: shape=(4, 3), dtype=float64, numpy=
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])>

<tf.Tensor: shape=(3, 3), dtype=float64, numpy=
array([[4., 4., 4.],
       [4., 4., 4.],
       [4., 4., 4.]])>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

simpsun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值