PyTorchにおける「カスタムデータセットの作成」は、独自の形式のデータや特殊な前処理を行いたい場合に重要です。これには、torch.utils.data.Dataset クラスを継承してカスタムクラスを定義する方法が用いられます。
1. 基本的な目的
PyTorchのDatasetクラスを継承して自作のクラスを作成することで、以下のことが可能になります。
-
独自フォーマットの画像・テキスト・時系列データへの対応
-
特別な前処理や変換(正規化、トークナイズ、ラベルエンコーディングなど)
-
大規模データの逐次読み込み(メモリ効率化)
2. カスタムDatasetの構成
カスタムデータセットクラスでは、以下の3つのメソッドを実装します。
(1) __init__(self, ...)
__init__(self, ...)-
データの読み込み準備や前処理設定などを行う
-
ファイルパスの取得や変換クラスの受け取りなど
(2) __len__(self)
__len__(self)-
データの総数を返す(学習の反復回数などに必要)
(3) __getitem__(self, index)
__getitem__(self, index)-
指定されたインデックスのデータとラベル(または出力)を返す
-
実際の前処理(変換、正規化など)もここで実行
3. 実装例(画像分類の場合)
この例では、
-
image_dirに画像ファイルが保存されていると仮定 -
labelsは画像に対応するラベルのリスト -
transformにtorchvision.transformsの処理を渡すことで、画像のリサイズ・テンソル化・正規化などを実現
4. 利用方法
上記のカスタムデータセットは、DataLoaderと組み合わせて使用します。
5. 応用的な内容
カスタムデータセットは以下のような応用にも対応可能です。
-
テキストデータのトークナイズとベクトル化(例: BERTやWord2Vecを利用)
-
時系列データからのスライディングウィンドウ生成
-
マルチモーダルデータ(画像とテキストの同時入力)への対応
-
複数ファイル形式(CSV + 画像ファイル)の連携
6. まとめ
| 項目 | 内容 |
|---|---|
| 基本継承クラス | torch.utils.data.Dataset |
| 必須メソッド | __init__, __len__, __getitem__ |
| 主な用途 | 独自データの前処理・学習用形式への変換 |
| 組み合わせ | DataLoaderでバッチ処理、シャッフル等 |
生成日:2025/05/22