2016-07-18 3 views
2

Предположим, что у меня есть тензоры x[i,j,k] и y[p,q] на графике. Каков правильный способ определения тензора z[i,j,k,p,q] = x[i,j,k]y[p,q]? Это координатное представление tensor product от x и y. Я могу получить работу, используя комбинацию tf.expand_dims, tf.mult и tf.tile, но я чувствую, что должен быть лучший способ ...Каков наилучший способ умножения тензоров в тензорном потоке

ответ

3

Я думаю, что можно обойтись без операции с использованием плитки вещания.

x_reshaped = tf.reshape(x, (i, j, k, 1, 1)) 
y_reshaped = tf.reshape(y, (1, 1, 1, p, q)) 
z = x_reshaped * y_reshaped 

Если измерение имеет размер 1 и не соответствует размеру размеров другого тензора в это время умножается, то он копируется/транслируются автоматически по этому измерению и продукт осуществляется. Плитка часто не нужна. На самом деле я не думаю, что когда-либо использовал плитки в тензорном потоке. Здесь я также использовал reshape, а не expand_dims, но результат тот же самый.

Смежные вопросы