Skip to content
Advertisement

Concatenating empty array in Tensorflow

So basically, my question is the same as Concatenating empty array in Numpy but for Tensorflow.

Mainly, the motivation is to handle the initial array in a prettier way that using a if statement. My current pseudo-code is:

E = None
for a in A:
    if E is None:
        E = a
    else:
        E = tf.concat([E, a], axis=0)

This technique works but I would like to make it a prettier way and maybe using only tf.Tensor. This is a code of a custom layer so I am interested in a code that works inside a model.

I would like a solution closer to the accepted response initializing E as: E = np.array([], dtype=np.int64).reshape(0,5).

This question gets close enough but when I init E as:

E = tf.zeros([a.shape[0], a.shape[1], 0])
...

I get an empty tensor as a result with only the correct shape but not filled.

Advertisement

Answer

In TF2, you can simply port the numpy solution with TensorFlow functions:

>>> xs = tf.constant([[1,2,3,4,5],[10,20,30,40,50]])
>>> ys = tf.reshape(tf.constant([], dtype=tf.int32),(0,5))
>>> ys
<tf.Tensor: shape=(0, 5), dtype=int32, numpy=array([], shape=(0, 5), dtype=int32)>
>>> tf.concat([ys,xs], axis=0)
<tf.Tensor: shape=(2, 5), dtype=int32, numpy=
array([[ 1,  2,  3,  4,  5],
       [10, 20, 30, 40, 50]], dtype=int32)>
User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement