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). Я получаю указанную выше ошибку. Я не знаю, почему он выходит из-под контроля, разве не из-за слишком большого количества изображений? Кто-нибудь знает, как я могу решить проблему?
Вы неправильно его переделываете. Вы хотите загрузить изображение 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-х полосные изображения
да, у него 4 полосы, ссылка: kaggle.com/fedebayle/slums-argentina Можете ли вы объяснить мне для 3 полос, почему мне нужно изменить форму моего массива как array.reshape (-1, IMG_SIZE, IMG_SIZE, 3)?
Спасибо, это сработало, у меня 4 полосы, поэтому я поставил (-1,32,32,4), но когда я изменяю свои исходные тестовые данные таким же образом, как указано выше, которые имеют тот же тип изображений, что и данные для обучения, он показывает эту ошибку, ValueError: невозможно преобразовать массив размером 112640 в форму (-1,32,32,4). Должен ли я удалить несколько изображений, чтобы 112640 делилось на 32 * 32 * 4?