torch.utils.data.Dataset
とtorch.utils.data.DataLoader
を(torchvision.datasets
だけでなく)自分のデータで使用する方法は?
DataLoaders
で使用する組み込みのTorchVisionDatasets
を使用して、データセットで使用する方法はありますか?
はい、可能です。自分でオブジェクトを作成するだけです。
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
はスカラーを予測しようとしているか、ベクトル。
お役に立てば幸いです!
EDIT:@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)
(値-1
は、2番目の次元の長さを自動的に計算するようにPyTorchに指示します。)