Я пытаюсь построить модель распознавания лиц с использованием CNN. У меня есть набор данных изображений, который состоит из 368 классов, каждый класс содержит 15 изображений.Я пытаюсь использовать keras.utils.to_categorical на ярлыках изображений (имена классов, которые являются числами от 1 до 368), чтобы установить конкретную метку на 1, а остальные установить на ноль во время обучения. Вот что я сделал до сих пор
import cv2
import numpy as np
import os
import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D
from pathlib import Path
from sklearn.model_selection import train_test_split
SEED = 44000
data = []
label = []
BASE_FOLDER = r'C:\Users\Desktop\images\\'
folders = os.listdir(BASE_FOLDER)
for folder in folders:
for file in os.listdir(BASE_FOLDER + folder + '//'):
img = cv2.imread(BASE_FOLDER + folder + '//' + file)
data.append(img)
label.append(folder)
train_data, test_data, train_label, test_label = train_test_split(data, label, test_size=0.1, random_state=SEED)
train_data = np.array(train_data, dtype=np.float32)
test_data = np.array(test_data, dtype=np.float32)
train_data = train_data / 180 # to make the array values between 0-1. image size is 180 X 180
test_data = test_data / 180
train_label = list(map(int, train_label))
train_label = keras.utils.to_categorical(train_label, 368)
но я получаю эту ошибку
IndexError Traceback (most recent call last)
<ipython-input-69-f087078ef22a> in <module>
----> 1 train_label = keras.utils.to_categorical(train_label, 368)
~\Miniconda3\envs\tf_gpu\lib\site-packages\keras\utils\np_utils.py in to_categorical(y, num_classes, dtype)
32 n = y.shape[0]
33 categorical = np.zeros((n, num_classes), dtype=dtype)
---> 34 categorical[np.arange(n), y] = 1
35 output_shape = input_shape + (num_classes,)
36 categorical = np.reshape(categorical, output_shape)
IndexError: index 400 is out of bounds for axis 1 with size 368
в чем смысл этой ошибки и как ее решить?