PyTorch: カスタムデータセットに DataLoaders を使用する方法 質問する

PyTorch: カスタムデータセットに DataLoaders を使用する方法 質問する

torch.utils.data.Datasetおよび をtorch.utils.data.DataLoader独自のデータ( だけでなくtorchvision.datasets)で活用するにはどうすればよいでしょうか?

DataLoaders組み込み関数を任意のデータセットで使用する方法はありますかTorchVisionDatasets?

ベストアンサー1

はい、可能です。オブジェクトを自分で作成するだけです。例:

import torch.utils.data as data_utils

train = data_utils.TensorDataset(features, targets)
train_loader = data_utils.DataLoader(train, batch_size=50, shuffle=True)

ここでfeatures、 とはテンソルtargetsです。featuresは 2 次元、つまり各行が 1 つのトレーニング サンプルを表す行列である必要があります。また、targetsスカラーを予測しようとしているのか、ベクトルを予測しようとしているのかに応じて、1 次元または 2 次元になります。


編集: @sarthak の質問への回答

基本的にはそうです。 型のオブジェクトを作成するとTensorData、コンストラクターは、特徴テンソル (実際には と呼ばれますdata_tensor) とターゲット テンソル ( と呼ばれますtarget_tensor) の最初の次元の長さが同じかどうかを調査します。

assert data_tensor.size(0) == target_tensor.size(0)

ただし、これらのデータを後でニューラル ネットワークに入力する場合は、注意が必要です。畳み込みレイヤーはこのようなデータに対して機能しますが、(私の考えでは) 他のすべてのタイプのレイヤーでは、データが行列形式で提供されることが想定されています。したがって、このような問題に遭遇した場合、簡単な解決策は、FloatTensorメソッドを使用して 4D データセット (何らかのテンソルとして指定、例: ) を行列に変換することですview。5000xnxnx3 データセットの場合、次のようになります。

2d_dataset = 4d_dataset.view(5000, -1)

(この値は、-1PyTorch に 2 番目の次元の長さを自動的に計算するように指示します。)

おすすめ記事