Потери Tensorflow & A cc остаются постоянными в модели CNN - PullRequest
0 голосов
/ 12 марта 2020

Я только начал изучать CNN на Tensorflow. Однако при обучении модели потери и точность не меняются.

enter image description here

Я использую изображения размером 128x128x3, и изображения нормализуются ( в [0,1]). И вот компилятор, который я использую.

model.compile (optimizer = tf.keras.optimizers.Adam (lr = 0.000001), loss = 'binary_crossentropy', metrics = ['precision'])

А вот сводка моей модели

enter image description here

Я пробовал следующие вещи, но у меня всегда одни и те же значения:

  • Измените скорость обучения с 0,00000001 на 10
  • Измените ядро ​​свертки Я пробовал 5x5 и 3x3
  • Я добавил еще один полностью связанный слой и слой Conv.

обновление

Вес слоев не изменился после подгонки модели. У меня одинаковые начальные веса.

1 Ответ

1 голос
/ 12 марта 2020

Вы можете попробовать это,

 model.compile(optimizer='adam',
          loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
          metrics=['accuracy'])

Кроме того, удалите активацию softmax из последнего слоя, проблема двоичной классификации не требует softmax. Итак, что делает softmax в этом случае, так это обрезает значение всегда до 1, поскольку существует только одна вероятность, и, следовательно, сеть не тренируется. Эта ссылка может помочь вам понять softmax. Кроме того, вы можете попробовать использовать сигмовидную активацию на конечном узле. Это обрезает вывод до значения в диапазоне от 0 до 1, и вес сети не будет взорван из-за очень высоких потерь.

...