Как рассчитать компонент массива при использовании tenorlflow - PullRequest
0 голосов
/ 21 марта 2019

Из моей сети я могу получить тензор с формой (21, 3) в середине сети.Перед тем, как передать тензор в следующую сеть, мне нужно его вычислить.Например, мне нужно вычесть каждый компонент по определенному значению в тензоре.Если значение
tensor[10, 0] = x, tensor[10, 1] = y, tensor[10, 2] = z tensor[:, 0] = tensor[:, 0] - x tensor[:, 1] = tensor[:, 1] - y tensor[:, 2] = tensor[:, 2] - z

, а также необходимо его нормализовать, например

tensor[10, 0] - tensor[0, 0] = a, tensor[10, 1] - tensor[0, 1] = b, tensor[10, 2] - tensor[0, 2] = c tensor = tensor / sqrt(a^2 + b^2 + c^2)

, есть ли способ вычислить тензор и подать егоснова к остальной сети?

1 Ответ

0 голосов
/ 21 марта 2019

Вы можете вычислить тензор формы [1,3] со значениями [тензор [10,0], тензор [10,1], тензор [10,2]] следующим образом: (есть другие способы)

s = tf.concat([tf.reshape(tensor[10,0], shape=[1,1]), tf.reshape(tensor[10,1], shape=[1,1]), tf.reshape(tensor[10,2], shape=[1,1])], axis=1)

Теперь вы можете вычесть s из tensor:

tensor2 = tensor - s

Вы получите, что значения обновляются до tensor[:, 0] = tensor[:, 0] - x и т. Д. С помощью широковещания.

Для нормализации вы можете просто напрямую вычислить ее следующим образом:

tensor3 = tensor2 / tf.sqrt(tf.square(tensor[10,0] - tensor[0,0]) + tf.square(tensor[10,1] - tensor[0,1]) + tf.square(tensor[10,2] - tensor[0,2]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...