Это может быть очень простой вопрос, но как новичок ie в керасе и машинном обучении я не могу решить эту проблему. Это проблема классификации двух классов. Мой код написан (Источник: Kaggle) в керасе с бэкэндом Tensorflow.
У меня есть каталог, который содержит две папки с именами "cat" и "dog". Каждая папка имеет несколько изображений размером 224 x 224 pixels
. Общий размер изображения составляет более 32 ГБ. Метка будет основана на именах папок, т. Е. Если имя папки содержит «cat», метка будет «0» или «1».
Фрагмент кода (Источник: Kaggle):
def get_images(directory):
Images = []
Labels = []
label = 0
for labels in os.listdir(directory): #Main Directory where each class label is present as folder name.
if labels == 'cat': #Folder contain 'cat' Images get the '0' class label.
label = 0
elif labels == 'dog':
label = 1
for image_file in os.listdir(directory+labels): #Extracting the file name of the image from Class Label folder
image = cv2.imread(directory+labels+r'/'+image_file) #Reading the image (OpenCV)
image = cv2.resize(image,(224,224)) #Resize the image, Some images are different sizes. (Resizing is very Important)
Images.append(image)
Labels.append(label)
return shuffle(Images,Labels,random_state=817328462) #Shuffle the dataset you just prepared. 817328462
def get_classlabel(class_code):
labels = {0:'cat', 1:'dog'}
return labels[class_code]
Images, Labels = get_images('./path_of_data_set') #Extract the training images from the folders.
Images = np.array(Images)
Labels = np.array(Labels)
def sequence():
model = Models.Sequential()
...
model=sequence();
model.summary()
# Train the model with the new callback
model.fit(Images, Labels, batch_size=32, epochs=100, validation_split=0.10, verbose=1)
Если количество изображений .png невелико, мой код работает отлично. Проблема возникает, когда я использую данные изображения 32 ГБ. Тогда я получаю проблемы с памятью. Я проверил много сообщений на этот счет и нашел много решений, но я не могу реализовать их в этом коде.
Подскажите, пожалуйста, как я могу подать данные в модель, чтобы они не отображали проблемы с памятью?