Функция broadcast_to
Функция broadcast_to расширяет тензор до указанной формы. Первым параметром функция принимает исходный тензор, вторым - целевую форму в виде списка или кортежа. Функция выполняет механизм broadcasting, при котором размерности длины 1 растягиваются до нужного размера, а также добавляются новые ведущие оси. Данные при этом не копируются, а виртуально повторяются.
Синтаксис
tf.broadcast_to(input, shape, [name])
Пример
Давайте расширим одномерный тензор до двумерной формы:
import tensorflow as tf
t = tf.constant([1, 2, 3])
res = tf.broadcast_to(t, [3, 3])
print(res)
Результат выполнения кода:
tf.Tensor(
[[1 2 3]
[1 2 3]
[1 2 3]], shape=(3, 3), dtype=int32)
Пример
Давайте расширим тензор с размерностью длины 1 до большей формы:
import tensorflow as tf
t = tf.constant([[1], [2], [3]])
res = tf.broadcast_to(t, [3, 4])
print(res)
Результат выполнения кода:
tf.Tensor(
[[1 1 1 1]
[2 2 2 2]
[3 3 3 3]], shape=(3, 4), dtype=int32)
Пример
Давайте попробуем расширить тензор до несовместимой формы и получим ошибку:
import tensorflow as tf
t = tf.constant([1, 2, 3])
res = tf.broadcast_to(t, [2, 3])
print(res)
Результат выполнения кода:
InvalidArgumentError: Dimensions must be equal or one of them must be 1, but are 2 and 3
Смотрите также
-
функцию
tile,
которая повторяет тензор заданное число раз -
функцию
reshape,
которая изменяет форму тензора без изменения данных -
функцию
expand_dims,
которая добавляет новую ось в тензор -
функцию
shape,
которая возвращает форму тензора