Обучающая модель идентификации изображений Keras

#python #tensorflow #keras #deep-learning

#python #тензорный поток #keras #глубокое обучение

Вопрос:

Мне было поручено создать обучающую модель, которая в конце создаст файл .h5. Однако у меня было много проблем с этим, и я надеялся, что смогу получить некоторые рекомендации. На данный момент я пытаюсь заставить его просто начать обучение, а затем создать файл .h5, я буду работать над нормализацией изображений и тому подобным позже.

Следует отметить несколько моментов: у меня более двух категорий, и не все мои изображения одинакового размера. У меня также нет графического процессора. Я надеялся получить некоторые рекомендации или ответы. Спасибо за любую помощь, которую вы, ребята, можете оказать

 ######################################################
# Imports
######################################################
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras import layers

######################################################
# Settings and Parameters
######################################################
train_pics = ImageDataGenerator(rescale=1/255)  # setting the value of which we multiply before any other processing
test_pics = ImageDataGenerator(rescale=1/255)  # setting the value of which we multiply before any other processing
trainSet = train_pics.flow_from_directory('Pictures/train/', target_size=(100, 100), batch_size=11,
                                          class_mode='categorical')  # path and data
testSet = train_pics.flow_from_directory('Pictures/test/', target_size=(100, 100), batch_size=20,
                                        class_mode='categorical')  # path and data

######################################################
# Model Creation
######################################################
model = keras.Sequential(
    [
        tf.keras.layers.Conv2D(16, (3, 3), activation='relu', input_shape=(250, 250, 3)),
        tf.keras.layers.MaxPooling2D(2, 2),
        tf.keras.layers.Conv2D(32, (3, 3), activation="relu"),
        tf.keras.layers.MaxPooling2D(2, 2),
        tf.keras.layers.Conv2D(64, (3, 3), activation="relu"),
        tf.keras.layers.MaxPooling2D(2, 2),
        tf.keras.layers.Conv2D(64, (3, 3), activation="relu"),
        tf.keras.layers.MaxPooling2D(2, 2),
        tf.keras.layers.Conv2D(64, (3, 3), activation="relu"),
        tf.keras.layers.MaxPooling2D(2, 2),
        layers.Flatten(),
        layers.Dropout(0.5),
        layers.Dense(8, activation="softmax"),
    ]
)

model.compile(loss='categorical_crossentropy',  # compile the model
              optimizer='adam',
              metrics=['accuracy'])

train = model.fit(  # train the model
    train_pics,
    steps_per_epoch=200,
    epochs=100,
    validation_data=testSet
)

model.save('charactersPics.h5')
 

Это результат:
введите описание изображения здесь

Комментарии:

1. в чем проблема вашего кода?

2. Извините, я получаю кучу сообщений об ошибках, и это никогда не компилируется или что-то в этом роде. imgur.com/a/75R5RUk это изображение сообщений об ошибках

3. Я думаю, что начальные красные — это просто предупреждения, можете ли вы показать созданную вами структуру каталогов?

Ответ №1:

Вы пытаетесь передать свой ImageDataGenerator в качестве аргумента модели. Вам нужно передать обучающий набор. Изменить

 train = model.fit(train_pics,...)
 

Для

 train = model.fit(trainSet,...)
 

Редактировать: предупреждения в pycharm довольно нормальные, не беспокойтесь о них слишком сильно.