DataLoaderのふるまいの正解がわからない
PyTorchで自作のDetasetを作ってDataLoaderに渡して中身の確認をしています。
CSVの中身です。
ID CLS VAL (VALに0、1が40個入っています)
0 0 1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,1,0,1,1,1,1,1,0
1 0 1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,1,1,0,1,0,1,1,1,0
2 1 1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,1,1,0
3 0 1,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,1,1,1,0,1,0
4 0 1,0,0,1,0,0,0,1,0,0,0,1,1,0,1,1,0,0,1,1,1,1,1,0
... ... ...
995 0 1,0,0,1,0,0,0,1,0,0,0,1,1,0,1,1,1,0,1,1,1,1,1,0
996 1 1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,0,0,1,0,1,0,1,0
997 0 1,0,0,0,1,0,0,1,0,0,0,1,1,0,1,1,1,0,0,0,1,1,0,0
998 1 1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,1,0,0,1,1,1,0,0
999 1 1,0,0,0,1,0,0,1,0,0,0,1,1,0,1,1,0,1,0,1,1,0,0,0
[ID]と[VAL]を[data]としてlistに-->[[1, 0, 1,・・・・0, 1, 0, 1, 0, 1]、[1, 0, 0, ・・・・0, 0, 0,]・・ ]]
[CLS]をlabelとして[list]に-->[[0],[1],[0],・・・・・・]]
Datasetでは、 returnで data,label を1組ずつ返してます。
下記のコードでprintして、
Python
1dataset=MyDataset('data.csv') #csvを読み込んで、dataとlabelを返すようなdatasetです。 2dataset_loader = torch.utils.data.DataLoader(dataset, 3 batch_size=2, shuffle=True) 4for i, data in enumerate(dataset_loader): 5 print(data)
出力のイメージ
datasizeは40個の要素が入ったベクトルが1000個、batch_size=2であれば、2組500セット返ってくることをイメージ
[[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],1.0],[[1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1],0.0]・・・・
実際出てきたのはこのように2つづつのdataと最後にlabelがくっついたものでした。
[[tensor([0, 0]), tensor([0, 0]), tensor([0, 0]), tensor([0, 0]), tensor([0, 0]), tensor([0, 0]), ・・・・・・・・・・([0, 0])], tensor([0., 0.], dtype=torch.float64)]
色々試して見たら、DataLoaderで、batch_size=Noneにするとイメージしていたような出力となりました。
python
1dataset=MyDataset('data.csv') 2dataset_loader = torch.utils.data.DataLoader(dataset, 3 batch_size=None, shuffle=True)
これはやっぱりDatasetでdata,labelの返し方がまずいんでしょうか?
それともDataLoaderの出力としてはこれであってるんでしょうか??
ネットや本も結構調べたのですが、よくわかりません。
初心者な質問ですが、アドバイスなどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー