Tensorflow применяется к каждому элементу 2d-тензора

То, что мне нужно, - это возможность применить tenorflow op к каждому элементу тензора 2d, например.

input = tf.Variable([[1.0, 2.0], [3.0, 4.0])
myCustomOp = ... # some kind of custom op that operates on 1D tensors
finalResult = tf.[thing I'm after](input, myCustomOp)
# when run final result should look like: [myCustomOp([1.0, 2.0]), myCustomOp([3.0, 4.0)]

Любые идеи?

Ответ 1

Следующая версия TensorFlow (0.8, которая в настоящее время доступна, если вы создаете источник или загружаете ночную сборку) включает операторов более высокого порядка, включая tf.map_fn() и tf.scan(), которые позволяют применить функцию, состоящую из операций TensorFlow, к под-тензорам более крупного тензора.

Функция tf.map_fn(fn, elems, ...) распаковывает N -мерный ввод elems по первому размеру на несколько N-1 -мерных подменсоров и применяет fn к каждому под-тензору. Это, по-видимому, идеально подходит для вашего использования:

input = tf.Variable([[1.0, 2.0], [3.0, 4.0]])
function_to_map = lambda x: f(x)  # Where `f` instantiates myCustomOp.
final_result = tf.map_fn(function_to_map, input)