Разделение набора данных на мини-пачки

PythonBeginner
Практиковаться сейчас

Введение

В этом проекте вы научитесь реализовывать функцию для разделения набора данных на мини-пачки, что является распространенной техникой при обучении глубоких нейронных сетей.

🎯 Задачи

В этом проекте вы научитесь:

  • Как реализовать функцию data_pipeline для разделения набора данных на мини-пачки
  • Как протестировать функцию data_pipeline, чтобы убедиться, что она работает как ожидается

🏆 Достижения

После завершения этого проекта вы сможете:

  • Разделить набор данных на мини-пачки с использованием функции data_pipeline
  • Проверить функциональность функции data_pipeline с помощью тестирования

Реализация мини-пачек

В этом шаге вы научитесь реализовывать функцию data_pipeline для разделения набора данных на мини-пачки.

Откройте файл data_pipeline.py в вашем текстовом редакторе.

Реализуйте функцию data_pipeline в соответствии с требованиями:

  • Функция должна принимать два параметра: data (список списков, содержащих целые числа) и batch_size (целое число, представляющее размер каждой мини-пачки).
  • Функция должна возвращать генератор, который генерирует пакеты входных данных, где каждый пакет содержит batch_size списков целых чисел.
  • Если оставшееся количество данных меньше batch_size, функция должна выводить все оставшиеся образцы.

Вот полная функция data_pipeline:

from typing import Generator, List

def data_pipeline(data: List[List[int]], batch_size: int) -> Generator[List[List[int]], None, None]:
    """
    Эта функция принимает список списков, содержащих целые числа, и разделяет его на более мелкие 'пачки' заданного размера.
    Она возвращает генератор, который последовательно генерирует эти пакеты.

    Параметры:
    data (List[List[int]]): Входной набор данных, список списков, содержащих целые числа.
    batch_size (int): Размер каждого пакета, то есть количество списков целых чисел, которое должно входить в каждый пакет.

    Возвращает:
    Generator[List[List[int]], None, None]: Генератор, который генерирует пакеты входных данных, при этом каждый пакет содержит 'batch_size' списков целых чисел.
    """
    for i in range(0, len(data), batch_size):
        batch_data = data[i : i + batch_size]
        yield batch_data

Сохраните файл data_pipeline.py.

Тестирование мини-пачек

В этом шаге вы протестируете функцию data_pipeline, чтобы убедиться, что она работает как ожидается.

Откройте файл data_pipeline.py в вашем текстовом редакторе.

Добавьте следующий код в конец файла для тестирования функции data_pipeline:

if __name__ == "__main__":
    data = [[1, 2], [1, 3], [3, 5], [2, 1], [3, 3]]
    batch_size = 2
    batch_data = data_pipeline(data, batch_size)
    for batch in batch_data:
        print(f"{batch=}")

Сохраните файл data_pipeline.py.

Запустите файл data_pipeline.py в вашей терминале:

python data_pipeline.py

Вывод должен быть таким:

batch=[[1, 2], [1, 3]]
batch=[[3, 5], [2, 1]]
batch=[[3, 3]]

Этот вывод подтверждает, что функция data_pipeline работает как ожидается, деля входной набор данных на мини-пачки размером 2.

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться