データセットをミニバッチに分割する

PythonBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、ディープラーニングのトレーニングで一般的に使用される手法である、データセットをミニバッチに分割する関数を実装する方法を学びます。

🎯 タスク

このプロジェクトでは、以下のことを学びます。

  • データセットをミニバッチに分割する data_pipeline 関数を実装する方法
  • data_pipeline 関数が期待通りに機能することを確認するためのテスト方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • data_pipeline 関数を使用してデータセットをミニバッチに分割する
  • テストを通じて data_pipeline 関数の機能を検証する

ミニバッチの実装

このステップでは、データセットをミニバッチに分割する data_pipeline 関数を実装する方法を学びます。

あなたのテキストエディタで data_pipeline.py ファイルを開きます。

以下の要件に従って data_pipeline 関数を実装します。

  • 関数は 2 つのパラメータを受け取る必要があります。data(整数を含む 2 次元リスト)と 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]:
    """
    この関数は、整数を含む 2 次元リストを受け取り、指定されたサイズのより小さな「バッチ」に分割します。
    それは順次これらのバッチを生成するジェネレータを返します。

    パラメータ:
    data (List[List[int]]): 入力データセット、整数を含む 2 次元リスト。
    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 でさらに多くの実験を行って練習してください。

✨ 解答を確認して練習✨ 解答を確認して練習