Функция unstack
Функция unstack разбивает тензор на список тензоров
вдоль указанной оси. Первым параметром функция принимает
исходный тензор. Вторым параметром можно передать номер оси,
по которой происходит разбиение. Третьим параметром можно
задать количество тензоров, на которое нужно разбить
исходный тензор.
Синтаксис
tf.unstack(value, [num], [axis])
Пример
Давайте создадим двумерный тензор и разобьем его по первой оси на отдельные тензоры:
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6]])
res = tf.unstack(t)
print(res)
Результат выполнения кода:
[<tf.Tensor: shape=(3,), dtype=int32, numpy=array([1, 2, 3], dtype=int32)>, <tf.Tensor: shape=(3,), dtype=int32, numpy=array([4, 5, 6], dtype=int32)>]
Пример
Давайте разобьем тензор по второй оси:
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6]])
res = tf.unstack(t, axis=1)
print(res)
Результат выполнения кода:
[<tf.Tensor: shape=(2,), dtype=int32, numpy=array([1, 4], dtype=int32)>, <tf.Tensor: shape=(2,), dtype=int32, numpy=array([2, 5], dtype=int32)>, <tf.Tensor: shape=(2,), dtype=int32, numpy=array([3, 6], dtype=int32)>]
Пример
Давайте разобьем одномерный тензор на отдельные скалярные тензоры:
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5])
res = tf.unstack(t)
print(res)
Результат выполнения кода:
[<tf.Tensor: shape=(), dtype=int32, numpy=1>, <tf.Tensor: shape=(), dtype=int32, numpy=2>, <tf.Tensor: shape=(), dtype=int32, numpy=3>, <tf.Tensor: shape=(), dtype=int32, numpy=4>, <tf.Tensor: shape=(), dtype=int32, numpy=5>]
Пример
Давайте разобьем тензор на заданное количество частей по первой оси:
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5])
res = tf.unstack(t, num=5)
print(res)
Результат выполнения кода:
[<tf.Tensor: shape=(), dtype=int32, numpy=1>, <tf.Tensor: shape=(), dtype=int32, numpy=2>, <tf.Tensor: shape=(), dtype=int32, numpy=3>, <tf.Tensor: shape=(), dtype=int32, numpy=4>, <tf.Tensor: shape=(), dtype=int32, numpy=5>]