Как преобразовать известный связанный компонент в матрицу смежности только с тензорными манипуляциями? - PullRequest
0 голосов
/ 09 мая 2018

Допустим, у меня есть N элементов, и я знаю, как они связаны. Это означает, что существует вектор [c1, c2, ..., cn], где ci в [0 ... CC] CC-компонентах учитывается.

Я хочу получить от нее матрицу смежности.

Простой пример ввод

[0, 0, 1, 2, 0, 1]

выход

1 1 0 0 1 0
1 1 0 0 1 0
0 0 1 0 0 1
0 0 0 1 0 0
1 1 0 0 1 0
0 0 1 0 0 1

Возможно ли получить его только с линейной алгеброй плюс некоторые дополнительные тензорные операции из TF?

1 Ответ

0 голосов
/ 09 мая 2018

Это можно сделать просто с помощью транслируемого сравнения с самим собой:

import tensorflow as tf

input = [0, 0, 1, 2, 0, 1]
adjacency_matrix = tf.cast(tf.equal(tf.expand_dims(input, 1), input), tf.int32)
print(sess.run(adjacency_matrix))

Выход:

[[1 1 0 0 1 0]
 [1 1 0 0 1 0]
 [0 0 1 0 0 1]
 [0 0 0 1 0 0]
 [1 1 0 0 1 0]
 [0 0 1 0 0 1]]
...