Pytorch - TypeError: ToTensor () не принимает аргументов, используя torchvision.transform - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь загрузить набор данных для супер-разрешения, и я настроил две функции, которые используют Compose для обрезки и изменения размера изображений.

Функция, которую я создал для входных изображений, работает правильно и они выводят, как ожидалось. Функция преобразования для целевых изображений в основном идентична, просто пропуская часть изменения размера.

def input_trans(c_size, sF):
    return Compose([
        CenterCrop(c_size),
        Resize(c_size // sF),
        ToTensor(),
    ])


def goal_trans(c_size):
    return Compose([
        CenterCrop(c_size),
        ToTensor(),
    ])

Эти функции используются в моем классе набора данных, когда изображения загружаются. Первоначально у меня была цель = input.Copy (), но я изменил ее, чтобы и вход, и цель загружали изображение отдельно. (проверял, была ли проблема .copy ()

def __getitem__(self, idx):
    input = Image.open(self.image_filenames[idx]).convert('RGB')
    goal = Image.open(self.image_filenames[idx]).convert('RGB')
    if self.input_transform:
        input = self.input_transform(input)
    if self.goal_transform:
        print(goal)
        print(goal.size)
        goal = self.goal_transform(goal)

    return input, goal

Я получаю следующее сообщение об ошибке:

Traceback (most recent call last):
  File "main.py", line 128, in <module>
    main()  # execute this only when run directly, not when imported!
  File "main.py", line 55, in main
    train_model(epoch)
  File "main.py", line 40, in train_model
    for data_item, batch in enumerate(training_data_loader):
  File "C:\Users\[NAME]\anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\dataloader.py", line 345, in __next__
    data = self._next_data()
  File "C:\Users\[NAME]\anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\dataloader.py", line 385, in _next_data
    data = self._dataset_fetcher.fetch(index)  # may raise StopIteration
  File "C:\Users\[NAME]\anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\_utils\fetch.py", line 44, in fetch
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "C:\Users\[NAME]\anaconda3\envs\pytorch\lib\site-packages\torch\utils\data\_utils\fetch.py", line 44, in <listcomp>
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "main.py", line 118, in __getitem__
    goal = self.goal_transform(goal)
  File "C:\Users\[NAME]\anaconda3\envs\pytorch\lib\site-packages\torchvision\transforms\transforms.py", line 70, in __call__
    img = t(img)
TypeError: ToTensor() takes no arguments

Меня смущает, потому что, похоже, нет проблемы с первым преобразованием (я проверил, и он выводит перед сбоем).

Буду признателен за любую помощь, которую вы, ребята, можете оказать,

Спасибо :))

1 Ответ

0 голосов
/ 16 апреля 2020

Проблема решена! ничего общего с torchvision.transforms.

На самом деле я не использовал вышеупомянутые функции, а встроенные объявления для compose, которые я пытался использовать ранее.

Мой плохой

...