我所追求的是能够将张量流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)]
有什么想法吗?
答案 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)