Индекс списка вне диапазона ... работает на Google Colab, но не на локальной машине? - PullRequest
3 голосов
/ 04 мая 2020

Я пытаюсь воссоздать этот проект на моей локальной машине. Он предназначен для работы в Google Colab, и я воссоздал его там, и он прекрасно работает. Я хочу попробовать запустить его на своем локальном компьютере, поэтому я установил все необходимые пакеты, anaconda, Juypter Notebook et c.

Когда я приду к той части, где я обрабатываю изображения:

# Loops through imagepaths to load images and labels into arrays
for path in imagepaths:
  img = cv2.imread(path) # Reads image and returns np.array
  img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Converts into the corret colorspace (GRAY)
  img = cv2.resize(img, (320, 120)) # Reduce image size so training can be faster
  X.append(img)

  #Processing label in image path   
  category = path.split("/")[3]   
  label = int(category.split("_")[0][1])   
  y.append(label) 

Выдает следующую ошибку:

IndexError: list index out of range 

Код не был изменен, по большей части, и набор данных такой же. Разница лишь в том, что я работаю локально против Google Colab. Я искал в Интернете, и кто-то сказал, что len (путь), чтобы убедиться, что (в моем случае) он достигает [3], что он делает (его размер 33).

Код изменился здесь:

Я не использовал эту строку, так как я не использую Google Colab:

from google.colab import files

«Файлы» используется в этой части кода:

# We need to get all the paths for the images to later load them
imagepaths = []

# Go through all the files and subdirectories inside a folder and save path to images inside list
for root, dirs, files in os.walk(".", topdown=False): 
  for name in files:
    path = os.path.join(root, name)
    if path.endswith("png"): # We want only the images
      imagepaths.append(path)

print(len(imagepaths)) # If > 0, then a PNG image was loaded

Вкл На моем локальном компьютере я удалил строку «from google.colab ...» и запустил все остальное в обычном режиме. Ключевое слово files используется в приведенном выше фрагменте кода, однако при его запуске мне не выдавалось никаких ошибок. NOTE len (путь) на Jupyter показывает 33, len (путь) на Google показывает 16 ..?

Кто-нибудь имеет какие-либо идеи, что может быть проблема? Я не думаю, что это произошло от удаления этой одной строки кода. Если это так, что вы предлагаете мне сделать, чтобы это исправить? Спасибо!

Спасибо

1 Ответ

3 голосов
/ 04 мая 2020

Ваш локальный компьютер работает на Windows, в то время как colab работает на linux, и разделители пути различны для обоих. Теперь вам нужно заменить

category = path.split("/")[3]

на

category = path.split("\\")[2]

И ваш код должен работать.

...