Тензор ноль: Тензорот над фронтальными срезами тензора

Я пытаюсь выполнить матричное умножение с фронтальными срезами трехмерного тензора, показанного ниже. Если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])

Ответы на вопрос(2)

Ваш ответ на вопрос