Abr*_*rar 10 python tensorflow
我有一个矩阵(矢量)X形状[3,4],我想计算每对矢量(X [1] .X [1])和(X [1] .X [之间的点积] 2])...等.
我看到他们使用的余弦相似代码
tf.reduce_sum(tf.multyply(X,X),axis = 1)
计算向量矩阵中向量之间的点积.然而,这个结果只计算(X [i],X [i])之间的点积.
我用tf.matmul(X,X,transpose_b = TRUE),其计算每两个向量的点积,但我仍然感到困惑,为什么tf.multiply没有做到这一点,我认为我的代码的问题.
代码是:
data=[[1.0,2.0,4.0,5.0],[0.0,6.0,7.0,8.0],[8.0,1.0,1.0,1.0]]
X=tf.constant(data)
matResult=tf.matmul(X, X, transpose_b=True)
multiplyResult=tf.reduce_sum(tf.multiply(X,X),axis=1)
with tf.Session() as sess:
print('matResult')
print(sess.run([matResult]))
print()
print('multiplyResult')
print(sess.run([multiplyResult]))
Run Code Online (Sandbox Code Playgroud)
输出是:
matResult
[array([[ 46., 80., 19.],
[ 80., 149., 21.],
[ 19., 21., 67.]], dtype=float32)]
multiplyResult
[array([ 46., 149., 67.], dtype=float32)]
Run Code Online (Sandbox Code Playgroud)
我很感激任何建议
pat*_*_ai 25
tf.multiply(X, Y)做逐元素相乘,使
[[1 2] [[1 3] [[1 6]
[3 4]] . [2 1]] = [6 4]]
Run Code Online (Sandbox Code Playgroud)
wheras tf.matmul做矩阵乘法,使
[[1 0] [[1 3] [[1 3]
[0 1]] . [2 1]] = [2 1]]
Run Code Online (Sandbox Code Playgroud)
使用tf.matmul(X, X, transpose_b=True)您正在计算装置X . X^T,其中^T表示矩阵的转置和.是矩阵乘法.
tf.reduce_sum(_, axis=1) 取第一轴的总和(从0开始计数),这意味着你要对行进行求和:
tf.reduce_sum([[a b], [c, d]], axis=1) = [a+b, c+d]
Run Code Online (Sandbox Code Playgroud)
这意味着:
tf.reduce_sum(tf.multiply(X, X), axis=1) = [X[1].X[1], ..., X[n].X[n]]
Run Code Online (Sandbox Code Playgroud)
如果您只想要每行的规范,那么这就是您想要的那个.另一方面
tf.matmul(X, X, transpose_b=True) = [[ X[1].X[1], X[1].X[2], ..., X[1].X[n]],
[X[2].X[1], ..., X[2].X[n]],
...
[X[n].X[1], ..., X[n].X[n]]
Run Code Online (Sandbox Code Playgroud)
如果你想要所有行对之间的相似性,那么这就是你所需要的.
是什么tf.multiply(X, X)呢矩阵的每个元素基本上是乘以本身,像
[[1 2]
[3 4]]
Run Code Online (Sandbox Code Playgroud)
会变成
[[1 4]
[9 16]]
Run Code Online (Sandbox Code Playgroud)
而tf.reduce_sum(_, axis=1)对每行求和,因此上一个示例的结果将是
[5 25]
Run Code Online (Sandbox Code Playgroud)
这完全(根据定义)等于[X[0, :] @ X[0, :], X[1, :] @ X[1, :]]。
只需用变量名[[a b] [c d]]而不是实际数字记下它,然后看看做什么tf.matmul(X, X)和tf.multiply(X, X)做什么。
| 归档时间: |
|
| 查看次数: |
24413 次 |
| 最近记录: |