torch.utils.data.Dataset
およびtorch.utils.data.DataLoader
を独自のデータ(torchvision.datasets
だけでなく)で使用するにはどうすればよいですか?PyTorch:カスタムデータセットにDataLoaderを使用する方法
で使用するinbuilt DataLoaders
を使用する方法はありますか。どのデータセットでも使用できますか?
torch.utils.data.Dataset
およびtorch.utils.data.DataLoader
を独自のデータ(torchvision.datasets
だけでなく)で使用するにはどうすればよいですか?PyTorch:カスタムデータセットにDataLoaderを使用する方法
で使用するinbuilt DataLoaders
を使用する方法はありますか。どのデータセットでも使用できますか?
はい、可能です。オブジェクトを自分で作成するだけです(例:
features
と
targets
はテンソルある
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
は、2-Dでなければならず、すなわち、各行が1つのトレーニングサンプルを表し、targets
は、スカラーかベクトルかを予測しようとしているかどうかに応じて、1-Dまたは2-Dでよい。
希望に役立ちます!
EDIT:@のsarthakの質問への応答
基本的にはい。あなたがタイプTensorData
のオブジェクトを作成する場合は、コンストラクタは(実際にdata_tensor
と呼ばれる)機能テンソルの最初の寸法と(target_tensor
と呼ばれる)の目標テンソルが同じ長さを持っているかどうかを調査:
assert data_tensor.size(0) == target_tensor.size(0)
しかし、これらのデータを後でニューラルネットワークに供給したい場合は、注意が必要です。畳み込みレイヤーはあなたのようなデータに作用しますが(私は思う)、他のタイプのレイヤーはすべて、データがマトリックス形式で与えられることを期待しています。したがって、このような問題に遭遇した場合、簡単な解決策は、メソッドview
を使用して、4Dデータセット(ある種のテンソルとして与えられます、たとえばFloatTensor
)を行列に変換することです。あなたの5000xnxnx3データセットの場合、これは次のようになります。
2d_dataset = 4d_dataset.view(5000, -1)
(値-1
が自動的に二次元の長さを把握するためにPyTorchを伝えます。)
私は3Dの特徴を持っています:画像の2Dとカラーチャネルのための追加の次元。私は5000xnxnx3として機能を渡す場合、それはまだ動作しますか? 5000はデータポイントの数ですnxnx3は画像サイズ – Sarthak
ですが、基本的にはyesですが、私の答えの編集を確認してください。 – pho7
4dデータセットは、ビューステートメントの必要がない機能として渡すことができます。 – Sarthak