はじめに
このプロジェクトでは、ディープラーニングのトレーニングで一般的に使用される手法である、データセットをミニバッチに分割する関数を実装する方法を学びます。
🎯 タスク
このプロジェクトでは、以下のことを学びます。
- データセットをミニバッチに分割する
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 でさらに多くの実験を行って練習してください。



