Удаление единичных осей в TensorFlow
Лишние оси длины один убирает
функция squeeze. Она удаляет
из формы все оси, где только одна
ячейка. Числа в тензоре при этом
не меняются.
Создадим таблицу из одной строки и трёх столбцов. Её форма содержит единицу в первой оси. Выведем форму до и после удаления таких осей:
import tensorflow as tf
block = tf.constant([[1, 2, 3]])
print(block.shape)
flat = tf.squeeze(block)
print(flat)
print(flat.shape)
Лишняя ось может стоять и в другом месте. Уберём её у столбца из одного столбца:
import tensorflow as tf
col = tf.constant([[10], [20], [30]])
print(col.shape)
row = tf.squeeze(col)
print(row)
print(row.shape)
Если единичных осей несколько, убираются все сразу:
import tensorflow as tf
box = tf.constant([[[1, 2, 3]]])
print(box.shape)
plain = tf.squeeze(box)
print(plain.shape)
Соберите тензор [[4, 5, 6, 7]].
Уберите оси длины 1 и выведите
форму результата.
Соберите тензор [[1], [2], [3]].
Уберите лишние оси и выведите
полученный одномерный ряд.
Соберите тензор формы (2, 1, 3)
из нулей. Выведите форму до и после
удаления осей длины 1.