Tensorflow将op应用于2d张量的每个元素

时间:2016-03-27 20:54:04

标签: tensorflow

我所追求的是能够将张量流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 个答案:

答案 0 :(得分:24)

TensorFlow的下一个版本(0.8,如果您从源代码构建或下载每晚版本,目前可用)包括higher-order operators,包括tf.map_fn()tf.scan(),可让您应用 function 由TensorFlow操作组成,用于较大张量的subtensors。

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)