Reputation: 162
this thread explains well the use of tf.repeat()
as a tensorflow alternative to np.repeat()
. one functionality which I was unable to figure out, in np.repeat()
, a specific column/row/slice can be replicated by supplying the index. e.g.
import numpy as np
x = np.array([[1,2],[3,4]])
np.repeat(x, [1, 2], axis=0)
# Answer will be -> array([[1, 2],
# [3, 4],
# [3, 4]])
is there any tensorflow alternative to this functionality of np.repeat()
?
Upvotes: 2
Views: 1460
Reputation: 26708
You could use the repeats
parameter of tf.repeat
:
import tensorflow as tf
x = tf.constant([[1,2],[3,4]])
x = tf.repeat(x, repeats=[1, 2], axis=0)
print(x)
tf.Tensor(
[[1 2]
[3 4]
[3 4]], shape=(3, 2), dtype=int32)
where you get the first row in the tensor once, and the second row twice.
Or you could use tf.concat
with tf.repeat
:
import tensorflow as tf
x = tf.constant([[1,2],[3,4]])
x = tf.concat([x[:1], tf.repeat(x[1:], 2, axis=0)], axis=0)
print(x)
Tensorflow 1.14.0 solution:
import tensorflow as tf
x = tf.constant([[1,2],[3,4]])
x = tf.concat([x[:1], tf.tile(x[1:], multiples=[2, 1])], axis=0)
print(x)
Upvotes: 1