Когда вы говорите can't predict anything
, означает ли это, что ваша Модель не может Predict
на New Data
или Test Data
?
a. Если ваша модель не справляется с новыми данными, это означает, что наша модель не обучена таким изображениям. Чтобы смягчить это, вам нужно добавить много таких новых изображений как часть обучающих данных
b. Если ваша модель не справляется с тестовыми данными, ваши тренировочные данные не представляют всех комбинаций изображений. Чтобы смягчить это, вы можете объединить данные Train
и Test
, перетасовать Data
случайным образом и затем разбить их на Train
и Test
.
Просмотр ваши Training Loss
и Validation Loss
и учитывая тот факт, что Model
плохо предсказывает невидимые данные, лучше всего использовать Data Augmentation
. Пример кода для реализации Data Augmentation
с использованием Keras ImageDataGenerator
показан ниже:
tf.keras.preprocessing.image.ImageDataGenerator(
featurewise_center=False, samplewise_center=False,
featurewise_std_normalization=False, samplewise_std_normalization=False,
zca_whitening=False, zca_epsilon=1e-06, rotation_range=40, width_shift_range=0.2,
height_shift_range=0.2, brightness_range=0.8, shear_range=0.4, zoom_range=0.7,
channel_shift_range=0.3, fill_mode='nearest', cval=0.0, horizontal_flip=True,
vertical_flip=True, rescale=None, preprocessing_function=None,
data_format=None, validation_split=0.0, dtype=None
)
Как упомянуто Колином Бе rnet, вы можете использовать Transfer Изучайте, как у вас ограниченный набор данных, используя эту ссылку . Пример кода для обучения обучению показан ниже:
x = keras.layers.Flatten()(conv_model.output)
# three hidden layers
x = keras.layers.Dense(100, activation='relu')(x)
x = keras.layers.Dense(100, activation='relu')(x)
x = keras.layers.Dense(100, activation='relu')(x)
# final softmax layer with two categories (dog and cat)
predictions = keras.layers.Dense(2, activation='softmax')(x)
# creating the full model:
full_model = keras.models.Model(inputs=conv_model.input, outputs=predictions)
full_model.summary()
Не уверен, что это работает, но вы можете попробовать заменить softmax
функцию активации на sigmoid
функцию активации в выходном слое.
Вы можете попробовать методы регуляризации, такие как Dropout
, l1_l2 Regularization
, EarlyStopping
, BatchNormalization
, et c ..
Если ни один из вышеперечисленных шагов не решил вашу проблему, пожалуйста, поделитесь полным воспроизводимым кодом чтобы мы могли продолжить расследование.