AttributeError: 'tuple' object has no attribute 'Dataset' の解決方法
解決したいこと
以下で発生しているエラーを解決したい
機械学習をしている初学者です。
pytorchでデータセットを作成しているときに以下のようなエラーが発生し、何が原因か理解できておりません。
エラーの発生原因と解決方法を知りたいです。
発生している問題・エラー
AttributeError Traceback (most recent call last)
Cell In[27], line 4
1 # の画像のDatasetを作成する
----> 4 class X_RayDataset(data.Dataset):
5 """
6 kaggle胸部X線の画像のDatasetクラス。PyTorchのDatasetクラスを継承。
7
(...)
15 訓練か検証かを設定
16 """
18 def __init__(self, file_list, transform=None, phase='train'):
AttributeError: 'tuple' object has no attribute 'Dataset'
または、問題・エラーが起きている画像をここにドラッグアンドドロップ
該当するソースコード
class X_RayDataset(data.Dataset):
"""
kaggle胸部X線の画像のDatasetクラス。PyTorchのDatasetクラスを継承。
Attributes
----------
file_list : リスト
画像のパスを格納したリスト
transform : object
前処理クラスのインスタンス
phase : 'train' or 'val'
訓練か検証かを設定
"""
def __init__(self, file_list, transform=None, phase='train'):
self.file_image,self.file_label = file_list # ファイルパスのリスト
print(self.file_image,self.file_label)
self.transform = transform # 前処理クラスのインスタンス
self.phase = phase # train or valの指定
def __len__(self):
'''画像の枚数を返す'''
return len(self.file_list)
def __getitem__(self, index):
'''
前処理をした画像のTensor形式のデータとラベルを取得
'''
#X_Rayデータ用の処理
img_path = self.file_image[index]
img_label = self.file_label[index]
#print(img_label)
#print("ラベルは=",img_label)
path_base="/home/kouki/kaggle_challenge/images/"
img = cv2.imread(path_base+img_path)
# 画像の前処理を実施
img_transformed = self.transform(
img, self.phase) # torch.Size([3, 224, 224])
# 画像のラベルをファイル名から抜き出す
if self.phase == "train":
label = img_label
elif self.phase == "val":
label = img_label
#print(label)
# ラベルを数値に変更する
if label == "No Finding":
label = 0
elif label == "Cardiomegaly":
label = 1
elif label == "Emphysema":
label = 2
elif label == "Effusion":
label = 3
elif label == "Hernia":
label = 4
elif label == "Nodule":
label = 5
elif label == "Pneumothorax":
label = 6
elif label == "Atelectasis":
label = 7
elif label == "Mass":
label = 8
elif label == "Edema":
label = 9
elif label == "Consolidation":
label = 10
elif label == "Infiltration":
label = 11
elif label == "Fibrosis":
label = 12
elif label == "Pneumoni":
label = 13
return img_transformed, label
# 実行
train_dataset = X_RayDataset(
train_list, transform=ImageTransform(size, mean, std), phase='train')
0