#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 довольно нормальные, не беспокойтесь о них слишком сильно.