【发布时间】:2018-12-28 00:46:24
【问题描述】:
这是我的第一篇文章,我通常在档案中找到我所有的答案,但是很难用这个,谢谢你的帮助!
我有两个矩阵 A 和 B。使用 tf.matmult 执行矩阵乘法运算很简单。但我想做矩阵减法,类似于矩阵乘法的工作原理。例如,如果我有。
A = tf.constant([[1, 1, 1, 2, 3, 1],[1,2,3,4,5,6],[4,3,2,1,6,5]])
B = tf.constant([[1,3,1],[2,1,1]])
#B*A
X = tf.matmult(B,A)
>>>X = [[8,10,12,15,24,24],[7,7,7,9,17,13]]
我想做的是做类似 matmult 的操作,但不是乘法,而是减法和平方。比如……
对于x11,其中下标11是矩阵X的第1行第1列。
= (-b11 + a11)2 + (-b12 + a21)2 + (-b13 + a31)2
和
x12 = (-b11 + a12)2 + (-b 12 + a22)2 + (-b13 + a32) 2
等等类似于矩阵乘法的工作原理。
所以如果我们取上面的矩阵 A 和 B 并执行上面描述的操作(称为 matmultsubtract),我们得到,
tf.matmultsubtract(B,A) 给出:
[[(-1+1)2+(-3+1)2+(-1+4)2, (-1+1)2+(-3+2)2+(-1+3)2,...],
[(-2+1)2+(-1+1)2+(-1+4)2, ( -2+1)2+(-1+2)2+(-1+3)2, ...]]
如果通过手动迭代而不是 np.matmult 使用 numpy 数组(您可以使用两个嵌套的 for 循环),这并不难,但是 tensorflow 的 for 循环有问题,我不知道该怎么做.
感谢您的帮助。
【问题讨论】:
-
如果你不介意我问,你为什么需要这个?我从来没有见过有人要求这样做...矩阵乘法就是这样,因为这就是我们组合线性运算符的方式,但是为什么您需要类似的结构来进行 [squared] 减法?
-
我想这与 MSE 有关。考虑到这一点,我想知道您想做什么,因为可能有更好的方法
-
您可以使用
tf.while_loop做到这一点,只是有点复杂。让我试一试 -
@Fred 在我的例子中,我想使用两个矩阵(列向量集)作为输入来实现RBF kernel。
标签: python tensorflow matrix matrix-multiplication