Тензор ноль: Тензорот над фронтальными срезами тензора
Я пытаюсь выполнить матричное умножение с фронтальными срезами трехмерного тензора, показанного ниже. ЕслиX.shape == (N, N)
, а такжеY.shape == (N, N, Y)
полученный тензор должен иметь форму(N, N, Y)
.
Что правильноnp.tensordot
синтаксис для достижения этого?
Я пытаюсь ограничитьсяnp.tensordot
, и неnp.einsum
, потому что я хочу позже перевести это решение в Theano. К сожалению, у Теано нетnp.einsum
реализовано еще.
Графика адаптирована изЭта бумага о тензорном умножении. Нетензорный ответ эквивалентен следующему
tensor = np.random.rand(3, 3, 2)
X = np.random.rand(3, 3)
output = np.zeros((3, 3, 2))
output[:, :, 0] = X.dot(tensor[:, :, 0])
output[:, :, 1] = X.dot(tensor[:, :, 1])