Распознавание изображений для типов собак не работает, мои модели могут быть проблемой, но я новичок в этом - PullRequest
2 голосов
/ 07 июня 2019

Я наткнулся на этот набор данных: https://www.kaggle.com/jessicali9530/stanford-dogs-dataset

Хотел попробовать самостоятельно поэкспериментировать с машинным обучением, пытаясь следовать инструкциям на YouTube.Понятия не имею о том, как модели должны быть построены.Я понимаю основы нейронов и слоев, но не уверен, почему точность и потеря кажутся неправильными.Любые рекомендации / объяснения для создания моделей (Активация, Conv2D, MaxPooling2D, Flatten, потеря, оптимизатор)

Я пытался изменить активацию и потерю как метод проб и ошибок, чтобы понять концепцию.

Я думаю, что мои проблемы следующие:

model = Sequential()
model.add(Conv2D(64,(3,3),input_shape=X.shape[1:]))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(64,(3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Flatten())
model.add(Dense(64))

model.add(Dense(1))
model.add(Activation("softmax"))

model.compile(loss="mean_squared_error",
             optimizer="adam",
             metrics=["accuracy"])

Файл моего ноутбука Jupyter: Файл моего ноутбука Jupyter

Точность и потери Как вы можете видетьточность - мусор, а потери - вне графика.

1 Ответ

1 голос
/ 07 июня 2019

Классификация изображений собак по различным категориям является задачей классификации .В машинном обучении существует два типа проблем: Классификация и регрессия .

Классификация имеет дело с категориальными метками и поэтому требует подходящей функции потерь.Вы должны использовать функцию categorical_crossentropy потерь как:

model.compile(loss="categorical_crossentropy",
             optimizer="adam",
             metrics=["accuracy"])

См. здесь для получения дополнительной информации.

Среднее квадратичное отклонение (MSE) используется для задач регрессии, так как имеет дело с непрерывными метками.Он используется для поиска линии, наиболее подходящей для определенного набора данных, чтобы MSE было наименьшим.

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

  1. Снизьте скорость обучения до 0,0001 или даже меньше.
  2. Используйте Dropout слоев.
  3. Используйте LeakyReLU слоев.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...