Я надеюсь, что я не пропускаю ничего очевидного здесь, но я перебрал интер-сети безрезультатно, и, наконец, пришел спросить здесь ...
Вот действительно сухой ипростое описание того, что я хотел бы сделать:
Скажем, у меня есть тензор формы (20, 40, 3, 5)
и еще один тензор формы (20, 40, 5, 7)
.Первые два размерных размера должны быть сохранены как есть и намеренно идентичны для двух тензоров.С другой стороны, last два измерения должны быть (матрично-) умножены в стиле matmul
.То есть мой получившийся тензор будет иметь форму (20, 40, 3, 7)
.Как это можно сделать ??
Я понимаю, что теоретически могу просто зациклить первые два измерения и напрямую использовать tf.matmul()
, но это абсолютно не нужно из-за времени выполнения, эффективности, обучения модели и графического процессора во всем мирепротесты, и моя совесть, если это имеет какой-либо вес :-).
Я, к сожалению, проигнорировал как "не то, что мне нужно" следующие параметры:
tf.tensordot
дал бы мне вывод формы (20, 40, 3, 20, 40, 7)
.Ничего хорошего.
tf.scan
подходит только для первого измерения, если я правильно его читаю (возможно, подходит для RNN? Не в моем случае).
tf.matmul
работает для тензоров ранга> = 2, но работает как @
в последнем и первом измерениях соответственно.Опять не мой случай.
Итак, еще раз - как это можно сделать?
Ответ numpy
, который помогает мне двигаться в правильном направлении, также был бы очень полезен, но в конце мне понадобится реализация tf
дня.
Заранее спасибо, и извините, если мне не хватает чего-то немого.
Следующее ближе к тому, что мне нужно, но менее понятно и поэтому пишется отдельно:
Первые два измерения являются пространственными измерениями изображения.Последние два на самом деле являются квадратными матрицами, полученными через tf.contrib.distributions.fill_triangular
, и умножаются (вместе с соответствующей транспозицией на одну из них) для получения ковариационных матриц, связанных с каждой пространственной координатой.Я не знаю, помогает ли это в любом случае, но это дает некоторый контекст по крайней мере.Кроме того, может быть или не быть размерность пакета, но я предполагаю, что решение случая четырехмерного тензора будет достаточно обобщаемым.