簡體   English   中英

從Tensorflow中的tf.matmul(tf.transpose(A),A)中獲取對角線元素

[英]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))

然后收集outtf.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)

只需一點線性代數,您就能找到解決方案: 在此處輸入圖片說明

這意味着您需要執行以下操作: tf.reduce_sum(tf.square(A), axis=0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM