Создать новый тензор на основе индексов из другого тензора и присвоить его значениям - PullRequest
0 голосов
/ 06 июня 2018

У меня есть тензор t выглядит так [[0, 1, 1.5], [1, 1, 7.3], [2, 0, 2.3]], и мне нужно создать новый тензор t1 с формой (3, 3, 1), где t1[t[:, :1], t[:, 1:2]] (элементы из первого столбца, используемые в качестве первой координаты, элементыиз второго столбца в качестве второй координаты) выделяется элементами из третьего столбца t.Как это t1 = [[[0.0], [1.5], [0.0]], [[0.0], [7.3], [0.0]], [[2.3], [0.0], [0.0]]].Как я могу сделать это, используя матричные операции в TensorFlow (или Numpy) без циклов?

Ответы [ 2 ]

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

Как насчет:

import numpy as np

t = np.asarray([[0,1,1.5],[1,1,7.3],[2,0,2.3]])

t1 = np.zeros([3,3,1])
t1[t[:,0].astype(int), t[:,1].astype(int),0] = t[:,2]
0 голосов
/ 06 июня 2018

Вы можете использовать tf.sparse_to_dense для этого:

tf.sparse_to_dense(tf.to_int32(t[:, :2]), [3, 3], t[:, 2])[..., None]
...