Метод from_tensor_slices
Метод from_tensor_slices класса Dataset создает датасет из переданных тензоров. Метод принимает один или несколько тензоров и разрезает их вдоль первого измерения, превращая каждый срез в отдельный элемент датасета. Первым параметром передается тензор или кортеж тензоров, вторым необязательным параметром можно передать имя датасета.
Метод удобно использовать, когда данные уже загружены в память в виде тензоров или массивов NumPy, а также для организации пар «признаки - метки» при обучении моделей.
Синтаксис
tf.data.Dataset.from_tensor_slices(tensors, [name])
Пример
Давайте создадим датасет из одномерного тензора и выведем его элементы:
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5])
dataset = tf.data.Dataset.from_tensor_slices(t)
for elem in dataset:
print(elem)
Результат выполнения кода:
tf.Tensor(1, shape=(), dtype=int32)
tf.Tensor(2, shape=(), dtype=int32)
tf.Tensor(3, shape=(), dtype=int32)
tf.Tensor(4, shape=(), dtype=int32)
tf.Tensor(5, shape=(), dtype=int32)
Пример
Давайте создадим датасет из двумерного тензора и выведем его элементы:
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6]])
dataset = tf.data.Dataset.from_tensor_slices(t)
for elem in dataset:
print(elem)
Результат выполнения кода:
tf.Tensor([1 2 3], shape=(3,), dtype=int32)
tf.Tensor([4 5 6], shape=(3,), dtype=int32)
Пример
Давайте создадим датасет из пары тензоров «признаки - метки»:
import tensorflow as tf
features = tf.constant([[1, 2, 3], [4, 5, 6]])
labels = tf.constant([0, 1])
dataset = tf.data.Dataset.from_tensor_slices((features, labels))
for x, y in dataset:
print(x, y)
Результат выполнения кода:
tf.Tensor([1 2 3], shape=(3,), dtype=int32) tf.Tensor(0, shape=(), dtype=int32)
tf.Tensor([4 5 6], shape=(3,), dtype=int32) tf.Tensor(1, shape=(), dtype=int32)
Пример
Давайте создадим датасет из строкового тензора:
import tensorflow as tf
t = tf.constant(['abcde', 'model.keras'])
dataset = tf.data.Dataset.from_tensor_slices(t)
for elem in dataset:
print(elem)
Результат выполнения кода:
tf.Tensor(b'abcde', shape=(), dtype=string)
tf.Tensor(b'model.keras', shape=(), dtype=string)
Пример
Давайте применим пакетирование к датасету, созданному методом from_tensor_slices:
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5])
dataset = tf.data.Dataset.from_tensor_slices(t)
dataset = dataset.batch(2)
for elem in dataset:
print(elem)
Результат выполнения кода:
tf.Tensor([1 2], shape=(2,), dtype=int32)
tf.Tensor([3 4], shape=(2,), dtype=int32)
tf.Tensor([5], shape=(1,), dtype=int32)
Смотрите также
-
класс
Dataset,
который представляет собой набор элементов -
метод
from_tensors,
который создает датасет из целых тензоров -
метод
from_generator,
который создает датасет из генератора -
метод
batch,
который объединяет элементы датасета в пакеты