Вероятность классификации двоичных изображений Tensorflow - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь следовать Учебному руководству по классификации изображений , но, к сожалению, он не говорит вам, как использовать модель после того, как вы ее создали.

Код, который я использую для создания модель:

model = Sequential([
    tf.keras.layers.Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_SIZE, IMG_SIZE ,3)),
    tf.keras.layers.MaxPooling2D(),
    tf.keras.layers.Dropout(0.1),
    tf.keras.layers.Conv2D(32, 3, padding='same', activation='relu'),
    tf.keras.layers.MaxPooling2D(),
    tf.keras.layers.Conv2D(64, 3, padding='same', activation='relu'),
    tf.keras.layers.MaxPooling2D(),
    tf.keras.layers.Dropout(0.1),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

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

В моей первой попытке у меня не было activation='sigmoid' на последнем плотном слое, но тогда прогнозы, которые я получаю от модели, например, [[332.9539]], чего я не делаю. Я не знаю, как интерпретировать.

После того, как я прочитал этот ответ, я добавил активацию сигмоида, чтобы получить значение от 0 до 1, но, к сожалению, при обучении модели точность застряла на 0,5, в то время как он работал раньше.

Что я делаю не так?

1 Ответ

0 голосов
/ 17 июня 2020

Если вы добавите сигмовидную активацию к последнему слою, вам необходимо удалить from_logits=True из экземпляра потери, поскольку ваша модель больше не создает логиты:

model.compile(optimizer='adam',
              loss=tf.keras.losses.BinaryCrossentropy(),
              metrics=['accuracy'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...