Как построить квадрат попарной разности для каждого вектора строки в матрице в тензорном потоке? - PullRequest
0 голосов
/ 25 июня 2018

У меня есть 2D-тензор, имеющий размерность K * N в TensorFlow,

Для каждого вектора строки в тензоре, имеющего размерность N, я могу вычислить квадрат попарной разности, используя подход из Как построить квадрат попарной разности из вектора в тензорном потоке?

Однако мне нужно усреднить результаты по K векторным строкам: выполнить квадрат каждого вектора попарной разности и усреднить результаты.

Как я могу это сделать? Нужна ваша помощь, большое спасибо !!!

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Логика, аналогичная Как построить квадрат попарной разности от вектора в тензорном потоке? но некоторые изменения, необходимые для обработки 2d:

a = tf.constant([[1,2,3], [4, 6, 8]])
pair_diff = tf.transpose(a[...,None, None,] - tf.transpose(a[...,None,None,]), [0,3,1,2])

reshape_diff = tf.reshape(tf.matrix_band_part(pair_diff, 0, -1), [-1, tf.shape(a)[1]*tf.shape(a)[1]])
output = tf.reduce_sum(tf.square(reshape_diff),1)[::tf.shape(a)[0]+1]

with tf.Session() as sess:
   print(sess.run(output))
#[ 6 24]
0 голосов
/ 25 июня 2018

Код, а затем результаты выполнения:

a = tf.constant([[1,2,3],[2,5,6]])
a = tf.expand_dims(a,1)
at = tf.transpose(a, [0,2,1])
pair_diff = tf.matrix_band_part( a - at, 0, -1)
output = tf.reduce_sum(tf.square(pair_diff), axis=[1,2])
final = tf.reduce_mean(output)

with tf.Session() as sess:
    print(sess.run(a - at))
    print(sess.run(output))
    print(sess.run(final))

Дайте эти результаты:

1) a - at (вычисляет то же самое, что и опубликованная вами ссылка, но по очереди)

 [[[ 0  1  2]
   [-1  0  1]
   [-2 -1  0]]

 [[ 0  3  4]
  [-3  0  1]
  [-4 -1  0]]]

2) output (возьмите часть полосы матрицы и суммируйте все измерения, кроме строк, т.е. у вас есть результат кода, который вы разместили для каждой строки)

[ 6 26]

3) final Среднее среди рядов

16
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...