tensorflow中向量与矩阵相乘

         我们只当使用tensorflow的tf.matmul()可以进行矩阵间的运算,但是要求矩阵的每一个维度的长度都要大于2,假如我们进行向量与矩阵的乘法时,使用该函数,则会报错。

          具体地,我们使用一个2为的向量乘以一个2×2的矩阵:

import tensorflow as tf
a = tf.constant([2, 3])
b = tf.constant([[0, 1], [2, 3]])
c = tf.matmul(a, b)
with tf.Session() as sess:
     print(sess.run(c))
会报错:
ValueError: Shape must be rank 2 but is rank 1 for 'MatMul_11' (op: 'MatMul') with input shapes: [2], [2,2].

那如何实现向量与矩阵相乘呢?

         我们知道矩阵乘法的本质是对矩阵的向量进行线性组合,利用这个性质,我们可以对矩阵进行点乘再相加,从实现向量与矩阵的乘法。具体如下

1、矩阵×向量
 [[0, 1],      [2,
 [2, 3]]   ×    3] 

具体代码实现:

import tensorflow as tf
a = tf.constant([2, 3])
b = tf.constant([[0, 1], [2, 3]])
mul =tf.reduce_sum(tf.multiply(a, b), reduction_indices=1)
with tf.Session() as sess:
     print(sess.run(mul))
结果是:
[ 3 13]
2、向量×矩阵
   [2, 3]  ×  [[0, 1],      
              [2, 3]]     
这个时候需要将矩阵进行转置,然后在进行点乘,再横向相加
具体代码如下:

import tensorflow as tf
a = tf.constant([2, 3])
b = tf.constant([[0, 1], [2, 3]])
mul =tf.reduce_sum(tf.multiply(a, tf.transpose(b, perm=[1, 0])), reduction_indices=1)
with tf.Session() as sess:
     print(sess.run(mul))
结果:
[ 6 11]

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值