Высочайшая точность первых эпох - PullRequest
1 голос
/ 02 апреля 2020

Я новичок в сообществе ML, я повеселился с упражнениями hello world и другими MNIST с python и тензорным потоком. Но сейчас (конечно) я хочу практиковаться на своих собственных данных. набор данных

Итак, я хотел бы использовать очень простую модель (на данный момент), уже использованную для набора данных для кошек и собак (вы можете найти код здесь: https://thedatafrog.com/fr/articles/dogs-vs-cats/). Но вместо набора данных cad и dog.zip я использую свой собственный набор данных. резюме-модель

В моем наборе данных содержится около 3000 изображений, относящихся к 2 классам (цефалоф и потамочер (некоторые виды из тропического леса Габона, см. Изображения ниже). Я нашел эти изображения на своем видео из камеры. Я сделал небольшой код, удаляющий 15 изображений из видео 6 se c. Так что некоторые из моих изображений очень похожи. И у меня есть около 150 изображений из каждого класса, которые были найдены в изображениях Google. Но когда Я запускаю свой код, у меня очень высокая точность в самые первые эпохи (как вы можете видеть на изображениях ниже). И в конце я получаю: loss: 0.1189 - a cc: 0.9578 - val_loss: 0.4246 - val_a cc: 0.8928. Но моя модель все равно ничего не может предсказать. эпох

Я предполагаю, что мои тренировочные и тестовые наборы слишком похожи, поэтому моя модель на самом деле не обучена. Но, возможно, я ошибаюсь, поэтому я прошу вашей помощи и советов. На изображениях ниже вы можете найти некоторые изображения из моего кода. кривые

Извините за плохой Энгли sh (любые французские парни здесь?) и извините, если это нубский вопрос.

1 Ответ

0 голосов
/ 07 мая 2020
  1. Когда вы говорите can't predict anything, означает ли это, что ваша Модель не может Predict на New Data или Test Data?

    a. Если ваша модель не справляется с новыми данными, это означает, что наша модель не обучена таким изображениям. Чтобы смягчить это, вам нужно добавить много таких новых изображений как часть обучающих данных

    b. Если ваша модель не справляется с тестовыми данными, ваши тренировочные данные не представляют всех комбинаций изображений. Чтобы смягчить это, вы можете объединить данные Train и Test, перетасовать Data случайным образом и затем разбить их на Train и Test.

  2. Просмотр ваши 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 )

  3. Как упомянуто Колином Бе 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 ..

Если ни один из вышеперечисленных шагов не решил вашу проблему, пожалуйста, поделитесь полным воспроизводимым кодом чтобы мы могли продолжить расследование.

...