IndexError: индекс 69791 находится за пределами оси 0 с размером 56044

def create_train_data():
    training_data = []
    for img in tqdm(os.listdir(TRAIN_DIR)):
        label = label_img(img)
        path = os.path.join(TRAIN_DIR, img)
        img = cv2.imread(path)
        img = cv2.resize(img, (IMG_SIZE, IMG_SIZE))
        training_data.append([np.array(img), np.array(label)])
    shuffle(training_data)
    np.save('train_data.npy', training_data)
    return training_data

train_data = create_train_data()

train = train_data[:-500]
test = train_data[-500:]

X = np.array([i[0] for i in train]).reshape(-1,IMG_SIZE,IMG_SIZE,1)
Y = [i[1] for i in train]

test_x = np.array([i[0] for i in test]).reshape(-1,IMG_SIZE,IMG_SIZE,1)
test_y = [i[1] for i in test]

model.fit({'input': X}, {'targets': Y}, n_epoch=3, validation_set=({'input': test_x}, {'targets': test_y}),
    snapshot_step=500, show_metric=True, run_id=MODEL_NAME)

**Getting following error**


Traceback (most recent call last):
Training samples: 168132
Validation samples: 1500
--
  File "C:\Users\Anas\AppData\Local\Programs\Python\Python36\lib\threading.py", line 916, in _bootstrap_inner
    self.run()
  File "C:\Users\Anas\AppData\Local\Programs\Python\Python36\lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\Anas\PycharmProjects\Minorproject\venv\lib\site-packages\tflearn\data_flow.py", line 187, in fill_feed_dict_queue
    data = self.retrieve_data(batch_ids)
  File "C:\Users\Anas\PycharmProjects\Minorproject\venv\lib\site-packages\tflearn\data_flow.py", line 222, in retrieve_data
    utils.slice_array(self.feed_dict[key], batch_ids)
  File "C:\Users\Anas\PycharmProjects\Minorproject\venv\lib\site-packages\tflearn\utils.py", line 187, in slice_array
    return X[start]
IndexError: index 69804 is out of bounds for axis 0 with size 56044

У меня есть все изображения 32X32 пикселей RGB-изображений (4 Band). Я получаю указанную выше ошибку. Я не знаю, почему он выходит из-под контроля, разве не из-за слишком большого количества изображений? Кто-нибудь знает, как я могу решить проблему?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
467
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы неправильно его переделываете. Вы хотите загрузить изображение ARGB, но вы изменяете X как reshape(-1,IMG_SIZE,IMG_SIZE,1), вместо этого вы должны сделать reshape(-1,IMG_SIZE,IMG_SIZE,4) для 4-канального изображения, и то же самое для вашей переменной test_x.

Отредактированная часть кода:

X = np.array([i[0] for i in train]).reshape(-1,IMG_SIZE,IMG_SIZE,4)
test_x = np.array([i[0] for i in test]).reshape(-1,IMG_SIZE,IMG_SIZE,4)

Спасибо, это сработало, у меня 4 полосы, поэтому я поставил (-1,32,32,4), но когда я изменяю свои исходные тестовые данные таким же образом, как указано выше, которые имеют тот же тип изображений, что и данные для обучения, он показывает эту ошибку, ValueError: невозможно преобразовать массив размером 112640 в форму (-1,32,32,4). Должен ли я удалить несколько изображений, чтобы 112640 делилось на 32 * 32 * 4?

Mohd Anas Khan 19.06.2018 01:08

Удаление изображений все равно не сработает. Я думаю, вам стоит проверить, действительно ли это 4-х полосные изображения

karma9874 19.06.2018 16:44

да, у него 4 полосы, ссылка: kaggle.com/fedebayle/slums-argentina Можете ли вы объяснить мне для 3 полос, почему мне нужно изменить форму моего массива как array.reshape (-1, IMG_SIZE, IMG_SIZE, 3)?

Mohd Anas Khan 20.06.2018 21:01

Другие вопросы по теме