Разделение обучающих и тестовых данных для tf.data.Dataset TensorFlow: подробное руководство

При работе с моделями машинного обучения в TensorFlow крайне важно разделить набор данных на подмножества обучения и тестирования. Это позволяет вам оценить производительность вашей модели на невидимых данных и оценить ее возможности обобщения. В этой статье мы рассмотрим различные методы разделения данных обучения и тестирования с помощью модуля tf.data.Dataset в TensorFlow. Итак, приступим!

Метод 1: использование функций skipи take.
Один простой способ разделить набор данных — использовать skipи takeфункций, предоставляемых модулем tf.data.Dataset. Вот пример:

import tensorflow as tf
dataset = tf.data.Dataset.range(100)
train_dataset = dataset.take(80)
test_dataset = dataset.skip(80)
# Print the elements in the train dataset
print("Train Dataset:")
for element in train_dataset:
    print(element.numpy())
# Print the elements in the test dataset
print("Test Dataset:")
for element in test_dataset:
    print(element.numpy())

Метод 2: использование функции split.
Другой подход — использование функции split, которая разбивает набор данных на несколько частей. Затем мы можем назначить одну часть набору данных поезда, а остальные части — тестовому набору данных. Вот пример:

import tensorflow as tf
dataset = tf.data.Dataset.range(100)
split_dataset = dataset.enumerate().batch(100).flat_map(lambda i, x: tf.data.Dataset.from_tensor_slices(x))
splits = split_dataset.apply(tf.data.experimental.split_at_indices([80]))
train_dataset = splits[0]
test_dataset = splits[1]
# Print the elements in the train dataset
print("Train Dataset:")
for element in train_dataset:
    print(element.numpy())
# Print the elements in the test dataset
print("Test Dataset:")
for element in test_dataset:
    print(element.numpy())

Метод 3: использование функции filter
Вы также можете разделить набор данных на основе условия с помощью функции filter. Например, вы можете отфильтровать элементы, удовлетворяющие определенному критерию, и назначить их тестовому набору данных. Вот пример:

import tensorflow as tf
dataset = tf.data.Dataset.range(100)
train_dataset = dataset.filter(lambda x: x < 80)
test_dataset = dataset.filter(lambda x: x >= 80)
# Print the elements in the train dataset
print("Train Dataset:")
for element in train_dataset:
    print(element.numpy())
# Print the elements in the test dataset
print("Test Dataset:")
for element in test_dataset:
    print(element.numpy())

Разделение набора данных на обучающие и тестовые поднаборы жизненно важно для создания надежных моделей машинного обучения. В этой статье мы рассмотрели несколько методов с использованием модуля tf.data.Dataset в TensorFlow. Вы можете выбрать метод, который соответствует вашим конкретным потребностям и характеристикам набора данных. Не забудьте оценить эффективность вашей модели на тестовом наборе данных, чтобы получить представление о ее возможностях обобщения.