У меня есть два тензора и весовая матрица в Theano. Тензор A имеет размерность (k, 5, 40). Тензор B имеет размерность (k, 5, 40). Весовая матрица W имеет размерность (40,40). Я хотел бы вычислить A W B. Какова правильная последовательность операций тензора Теано для достижения этого? Обратите внимание, что k может меняться во время выполнения, но другие измерения фиксированы. Семантика мы хотим от W B является следующее:Как размножить тензоры в Theano
Придумайте А как совокупность К (5,40) матриц. Назовите их A_1, ..., A_k Подумайте, что B является набором матриц k (5,40). Назовите их B_1, ..., B_k. Мы хотим найти A_ {i} * W * B_ {i}^{T} для всех i от 1 до k. Я пробовал использовать theano.tensor.dot, но это кажется довольно запутанным.
Обратите внимание, что это неэффективный способ использования функции сканирования. Но это сделает последовательный параллельный код последовательным.
Hi Malioboro! Я тоже смог это сделать! Проблема связана со вторым умножением. Вопрос задает трехстороннее умножение, а не два. Нам нужно умножить A и W, а затем (A * W) и (B) получить (A * W * B). Этот шаг A * W * B, который я не получаю. Как перейти от A * W, который вы создали в своем ответе (A * W) * B. Благодаря! – Sahil
oh sorry @Sahil, я просчитаю измерение, я обновляю свой ответ – malioboro
Hi Malioboro. В приведенном выше примере я хочу умножить трехмерный тензор на матричный точечный продукт. Подобно 'c = T.matrix ('c'), y = np.array ([[1,2], [3,4]]). Это нормально с циклом с использованием функции сканирования. Но использование T.batched_dot (a, c) дает правильное значение с ошибкой, например 'ValueError: get_scalar_constant_value, обнаруженным детерминированным IndexError:'. Не могли бы вы помочь? – Shyamkkhadka