Метод set_shape
Метод set_shape применяется к объекту тензора
и позволяет изменить его форму. Первым параметром
метод принимает новую форму в виде кортежа, списка
или объекта TensorShape. Метод не изменяет
данные тензора и не создает новый тензор, а лишь
обновляет метаданные о форме. Это полезно, когда
тензор был создан с неполной формой, например,
с None в измерениях, и нужно уточнить его
размерность. Метод возвращает None.
Синтаксис
t.set_shape(shape)
Пример
Давайте создадим тензор с неопределенной формой
через tf.placeholder и уточним его форму
с помощью метода set_shape:
import tensorflow as tf
t = tf.compat.v1.placeholder(tf.float32, shape=(None, 3))
print(t.shape)
t.set_shape((5, 3))
print(t.shape)
Результат выполнения кода:
(?, 3)
(5, 3)
Пример
Давайте применим метод set_shape к обычному
тензору и проверим, что его данные не изменились:
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6]])
print(t.shape)
t.set_shape((2, 3))
print(t.shape)
print(t.numpy())
Результат выполнения кода:
(2, 3)
(2, 3)
[[1 2 3]
[4 5 6]]
Пример
Давайте уточним форму тензора, созданного с
помощью tf.TensorSpec с неопределенным
первым измерением:
import tensorflow as tf
spec = tf.TensorSpec(shape=(None, 3), dtype=tf.float32)
t = tf.zeros(spec)
print(t.shape)
t.set_shape((4, 3))
print(t.shape)
Результат выполнения кода:
(?, 3)
(4, 3)