Ошибка объединения массивов NumPy
Вчера я задал вопрос по поводу того, как увеличить точность нейросети, мне посоветовали увеличить количество данных до обучения. Изначально у меня было 100 фото кошек и собак, сейчас скачал датасет Google, в нем 12500 фото кошек и столько же собак. Вроде-бы количество .npy файлов для обучения и у кошек, и у собак получается одинаковое. Проблема следующая:
Traceback (most recent call last):
File "e:\Unity\!!neuro\projects\catsAndDogs100\main.py", line 15, in <module>
train_data = np.concatenate((cats_train_data, dogs_train_data), axis=0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 3 dimensions. The detected shape was (12499, 224, 224) + inhomogeneous part.
Происходит после объединения фото кошек и собак. Я почитал в интернете, написано что эта ошибка возникает, когда разных файлов(то есть кошек и собак) разное количество, к примеру 1000 кошек и 1500 собак. Я проверил, файлов ровно 12499 в обеих папках. Вот код нормализации:
import numpy as np
from PIL import Image
import os
def normalize_images_in_folder_dogs(input_folder, output_folder, new_size):
if not os.path.exists(output_folder):
os.makedirs(output_folder)
image_files = os.listdir(input_folder)
for image_file in image_files:
if image_file.endswith('.jpg'):
input_path = os.path.join(input_folder, image_file)
output_path = os.path.join(output_folder, image_file)
image = Image.open(input_path)
resized_image = image.resize(new_size)
# Нормализация значений пикселей от 0 до 1
normalized_image = np.array(resized_image) / 255.0
# Сохранение нормализованного изображения
np.save(output_path.replace('.jpg', ''), normalized_image)
# Путь к папке с исходными изображениями
input_folder_dogs = "E:\\Unity\\!!neuro\\datasets\\catsAndDogs100\\dogs1"
# Путь к папке, куда будут сохранены нормализованные изображения
output_folder_dogs = "E:\\Unity\\!!neuro\\datasets\\catsAndDogs100\\finishedDogs1"
def normalize_images_in_folder_cats(input_folder, output_folder, new_size):
if not os.path.exists(output_folder):
os.makedirs(output_folder)
image_files = os.listdir(input_folder)
for image_file in image_files:
if image_file.endswith('.jpg'):
input_path = os.path.join(input_folder, image_file)
output_path = os.path.join(output_folder, image_file)
image = Image.open(input_path)
resized_image = image.resize(new_size)
# Нормализация значений пикселей от 0 до 1
normalized_image = np.array(resized_image) / 255.0
# Сохранение нормализованного изображения
np.save(output_path.replace('.jpg', ''), normalized_image)
# Путь к папке с исходными изображениями
input_folder_cats = "E:\\Unity\\!!neuro\\datasets\\catsAndDogs100\\cats1"
# Путь к папке, куда будут сохранены нормализованные изображения
output_folder_cats = "E:\\Unity\\!!neuro\\datasets\\catsAndDogs100\\finishedCats1"
# Размер, на который вы хотите изменить изображения
new_size = (224, 224)
normalize_images_in_folder_dogs(input_folder_dogs, output_folder_dogs, new_size)
normalize_images_in_folder_cats(input_folder_cats, output_folder_cats, new_size)
P.S.: Во время нормализации файлов, PIL выдал слудующее предупреждение:
C:\Users\artyo\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\TiffImagePlugin.py:870: UserWarning: Truncated File Read
warnings.warn(str(msg))
Может ли это повлиять на итоговые файлы?