Нет опыта работы с pytorch
, но может ли что-то вроде этой работы?
torch.einsum('ijk,abk->abc', (rnn_output, encoder_inputs))
Она берет произведение точек над последней осью и добавляет пару пустых осей назад.
Что-топодобное может быть достигнуто с помощью чистого numpy (pytorch 0.4
еще не имеет обозначения ...
)
np.einsum('...ik,...jk', rnn_output.numpy(), encoder_inputs.numpy())
Или с np.tensordot
np.tensordot(rnn_output.numpy(), encoder_inputs.numpy(), axes=[2,2])
Но здесь вы получитеВыходная форма: (1, 1, 10, 1)
Что вы можете исправить, сжимая и снова растягивая ( почти наверняка должен быть какой-то более чистый способ сделать это )
np.tensordot(rnn_output.numpy(), encoder_inputs.numpy(), axes=[2,2]).squeeze()[..., None, None]