У меня есть модель классификации изображений с CNN. Я закончил обучение с помощью MobileNet. В конце Mobile Net я добавил 4 слоя, чтобы узнать веса для моих изображений (не обновлять веса для MobileNet). Веса мобильной сети не изменены. В результате я получил 91% точности этой модели и оценил ее с помощью того же учебного набора (train_generator). Но у меня сейчас более низкая точность - около 41%. Почему получился другой результат? Я использовал тот же тренировочный набор, хотя ... Есть ли разница в точности model.fit_generator и model.evaluate_generator? или что-то не так в данных? Пожалуйста, помогите ... Как я могу улучшить точность ?? Вот весь мой код ниже.
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras.applications import MobileNet
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.mobilenet import preprocess_input
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam
base_model = MobileNet(weights='imagenet', include_top=False)
x=base_model.output
x=GlobalAveragePooling2D()(x)
x=Dense(1024, activation='relu')(x)
x=Dense(1024, activation='relu')(x)
x=Dense(512, activation='relu')(x)
preds=Dense(7, activation='softmax')(x)
model=Model(inputs=base_model.input, outputs=preds)
for layer in model.layers[:-4]:
layer.trainable=False
for layer in model.layers[-4:]:
layer.trainable=True
train_datagen = ImageDataGenerator(preprocessing_function=preprocess_input)
train_generator = train_datagen.flow_from_directory('/Users/LG/Desktop/finger',
target_size=(224, 224),
color_mode='rgb',
batch_size=32,
class_mode='categorical',
shuffle=True)
model.compile(optimizer='Adam', loss='categorical_crossentropy', metrics=['accuracy'])
step_size_train=train_generator.n//train_generator.batch_size
model.fit_generator(generator=train_generator,
steps_per_epoch=step_size_train,
epochs=10)
Эпоха 1/10
17/17 [==============================] - 53 с 3 с / шаг - потеря: 1,9354 - в соответствии с 0,3026
Эпоха 2/10
17/17 [==============================] - 52 с 3 с / шаг - потеря: 1,1933 - согласно: 0,5276
Эпоха 3/10
17/17 [==============================] - 52 с 3 с / шаг - потеря: 0,8936 - согласно: 0,6787
Эпоха 4/10
17/17 [==============================] - 54 с 3 с / шаг - потеря: 0,6040 - в соответствии с 0,7843
Эпоха 5/10
17/17 [==============================] - 53 с 3 с / шаг - потеря: 0,5367 - согласно: 0,8080
Эпоха 6/10
17/17 [==============================] - 55 с 3 с / шаг - потеря: 0,2676 - согласно: 0,9099
Эпоха 7/10
17/17 [==============================] - 52 с 3 с / шаг - потеря: 0,4531 - согласно: 0,8387
Эпоха 8/10
17/17 [==============================] - 53 с 3 с / шаг - потеря: 0,3580 - согласно: 0,8747
Эпоха 9/10
17/17 [==============================] - 55 с 3 с / шаг - потеря: 0,1963 - согласно: 0,9301
эпоха 10/10
17/17 [==============================] - 53 с 3 с / шаг - потеря: 0,2237 - согласно: 0,9133
model.evaluate_generator(train_generator, steps=5)
[2,169835996627808, 0,41875]