Open1

❣️PyTorch初心者❣️

ぴよぴよ

DataLoaderまわり

  • __init__はdataframe全部渡す
    • 画像の正解ラベルとdataframeを変数に入れておく
  • __getitem__は1つずつ画像をとってくる
    • 入れた変数から画像名をよむ→cv2とかでimread
    • ラベルは変数から直接よむ
    • 最後に画像とラベルを返す
  • 特にimreadするだけでよい(PILだとチャンネルの順序変える必要がある気がする)
    https://qiita.com/mathlive/items/2a512831878b8018db02

トラブルシューティング

'list' object has no attribute 'to'

DataLoaderの中のlabelsを.valuesとかで入れているとlistになっていて、GPUを使うために.toをするとエラーになることがある。そんなときは、numpyにしてからPyTorch tesnsorにする。

torch.from_numpy(np.asarray(labels))

それでもだめなとき(labelがstringとか)は、

classes_map = {'c0':0,'c1':1,'c2':2,'c3':3,'c4':4,'c5':5,'c6':6,'c7':7,'c8':8,'c9':9}
train['classnameInt'] = train.classname.map(lambda x: classes_map[x])

こんな感じで文字から数値形の型にマップして、それをラベルとして使うとよさそう。