Керас даст только точность 0,5001 - PullRequest
0 голосов
/ 11 июня 2019

Я использую Keras с бэкэндом тензорного потока. Я пытаюсь предсказать изображения.

Моя модель выглядит так:

model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(50, 50, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Flatten())
model.add(Dense(1, activation='softmax'))
model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

Запустив мой код, он выдаст такой вывод за 10 эпох:

    Epoch 1/10
    24946/24946 [==============================] - 36s 1ms/sample - loss: 7.9693 - acc: 0.5001
    Epoch 2/10
    24946/24946 [==============================] - 35s 1ms/sample - loss: 7.9693 - acc: 0.5001

    ...

    Epoch 9/10
    24946/24946 [==============================] - 30s 1ms/sample - loss: 7.9693 - acc: 0.5001
    Epoch 10/10
    24946/24946 [==============================] - 30s 1ms/sample - loss: 7.9693 - acc: 0.5001
    1/1 [==============================] - 0s 36ms/step
    [[1.]]

Во всяком случае, я не понимаю, почему точность всегда 0.5001 для всех 10 эпох.

У меня такой вопрос: Почему точность не меняется ни в одну эпоху?

1 Ответ

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

Эта часть вашего кода не имеет смысла:

model.add(Dense(1, activation='softmax'))

Softmax только с одним нейроном, который всегда выдает постоянную 1,0, из-за нормализации.Если вы хотите выполнить бинарную классификацию, вы должны использовать sigmoid активацию на выходе.

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