a = tf.constant([[1,2,3],[4,5,6]])
b = tf.constant([True, False], dtype=tf.bool)
a.eval()
array([[1, 2, 3],
[4, 5, 6]], dtype=int32)
b.eval()
array([ True, False], dtype=bool)
I want to apply a functions to the inputs above, a
, and b
using tf.map_fn
. It will input both [1,2,3]
, and True
and output similar values.
Let's say out function is simply the identity: lambda(x,y): x,y
so, given an input of [1,2,3], True
, it will output those identical tensors.
I know how to use tf.map_fn(...)
with one variable, but not with two. And in this case I have mixed data types (int32 and bool) so I can't simply concatenate the tensors and split them after the call.
Can I use tf.map_fn(...)
with multiple inputs/outputs of different data types?
Figured it out. You have to define the data types for each tensor in dtype
for each of the different tensors, then you can pass the tensors as a tuple, your map function receives a tuple of inputs, and map_fn
returns back back a tuple.
Example that works:
a = tf.constant([[1,2,3],[4,5,6]])
b = tf.constant([True, False], dtype=tf.bool)
c = tf.map_fn(lambda x: (x[0], x[1]), (a,b), dtype=(tf.int32, tf.bool))
c[0].eval()
array([[1, 2, 3],
[4, 5, 6]], dtype=int32)
c[1].eval()
array([ True, False], dtype=bool)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With