![](/img/trans.png)
[英]Why does tf.matmul(a,b, transpose_b=True) work, but not tf.matmul(a, tf.transpose(b))?
[英]Get diagonal elements from tf.matmul(tf.transpose(A), A) in Tensorflow
我有一个包含几列的矩阵A
,我需要计算自点积,即tf.matmul(A[:,i]), A[:,i], transpose_a=True)
,其中i
索引了A
列。 一种方法是只计算tf.matmul(A,A, transpose_a=True)
并提取对角线,但这涉及很多多余的乘法(所有非对角线结果都被丢弃,并且非对角线结果是大多数任何大于2 x 2的矩阵的结果)。 另一种方法是做类似的事情
out = []
for i in range(tf.shape(A)[1]):
out.append(tf.matmul((A[:,i],A[:,i],transpose_a=True))
然后收集out
成tf.Tensor
。 但是似乎这是一个相当普通的计算,因此我希望为此存在一个函数(即计算权重向量的平方范数)。
您可以将矩阵本身按元素相乘,然后沿轴0相加。
import tensorflow as tf
tf.InteractiveSession()
A = tf.reshape(tf.range(12), (3, 4))
tf.reduce_sum(tf.pow(A, 2), axis=0).eval()
回报
array([ 80, 107, 140, 179], dtype=int32)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.