Как оцифровать изображения в PyTorch? - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь создать кривую ROC для моего набора данных изображений, и для этого мне нужно преобразовать набор данных в двоичную форму. Набор данных, который я использую, является набором данных Retinal OCT. Но я теряюсь, когда пытаюсь преобразовать набор данных в двоичную форму для построения графика ROC.

Я делаю классификатор, используя PyTorch для 4 классов, используя resnet и распечатывая Train и test loss вместе с Accuracy. Но после того, как я узнаю о матрице путаницы, точность может не дать нам должного результата, если у нас более двух классов. Теперь я вычисляю Чувствительность (fpr) и Специфичность (tpr) набора данных и пытаюсь напечатать график ROC, используя эти параметры. Я следую этому уроку от Scikit-Learn, чтобы распечатать это - https://scikit -learn.org / стабильный / auto_examples / model_selection / plot_roc.html . Там я увидел, что сначала мне нужно преобразовать данные теста в двоичную форму, но когда я пытаюсь это сделать, каждый раз получаю сообщение об ошибке.

Я делаю всю программу в Google Colab, и вот как я подключаю свой диск -

from google.colab import drive
drive.mount('/content/drive')
data = "/content/drive/My Drive/AMD_new"

Теперь я увидел этот код на сайте Scikit Learn для бинаризации данных -

# Import some data to play with
iris = datasets.load_iris()
X = iris.data
y = iris.target

# Binarize the output
y = label_binarize(y, classes=[0, 1, 2])
n_classes = y.shape[1]

Это мой набор данных и загрузчик данных -

# choose the training and test datasets
train_data = datasets.ImageFolder(data+"/train", transform=transform_train)
test_data = datasets.ImageFolder(data+"/val", transform = transform_test)

test_data = label_binarize(test_data, classes=[0, 1, 2, 3])

dataloader_train = torch.utils.data.DataLoader(train_data, batch_size=32, shuffle=True, num_workers=2)
dataloader_test = torch.utils.data.DataLoader(test_data, batch_size=32, num_workers=2)

Когда я пытаюсь преобразовать test_data в двоичную форму, он выдаёт мне эту ошибку - OSError: cannot identify image file <_io.BufferedReader name='/content/drive/My Drive/AMD_new/val/CNV/CNV-6294785-1.jpeg'> в этой строке test_data = label_binarize(test_data, classes=[0, 1, 2, 3]) Кто-нибудь из вас, ребята, можете подсказать, как я могу преобразовать набор данных в двоичную форму, и я иду в правильном направлении или нет при печати графика ROC? Я довольно новичок в этой области Pytorch, поэтому мне интересно, правильно ли я иду, чтобы получить ROC или нет. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...