Функции активации: Softmax против SigmoidPython

Программы на Python
Anonymous
Функции активации: Softmax против Sigmoid

Сообщение Anonymous »

Я пытался создать классификатор изображений с помощью CNN. В моем наборе данных 2300 изображений и две категории: мужчины и женщины. Вот модель, которую я использовал:

Код: Выделить всё

early_stopping = EarlyStopping(min_delta = 0.001, patience = 30, restore_best_weights = True)
model = tf.keras.Sequential()

model.add(tf.keras.layers.Conv2D(256, (3, 3), input_shape=X.shape[1:],  activation = 'relu'))

model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2)))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.Conv2D(256, (3, 3), input_shape=X.shape[1:], activation = 'relu'))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2)))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.Flatten())  # this converts our 3D feature maps to 1D feature vectors

model.add(tf.keras.layers.Dense(64))

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

model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])

h= model.fit(xtrain, ytrain, validation_data=(xval, yval), batch_size=32, epochs=30, callbacks = [early_stopping], verbose = 0)
Точность этой модели составляет 0,501897, а потери 7,595693 (модель застревает на этих числах в каждую эпоху), но если я заменю активацию Softmax на Sigmoid, точность составит около 0,98, а потери 0,06. Почему с Softmax происходят такие странные вещи? Вся информация, которую я смог найти, сводилась к тому, что эти две активации похожи, а softmax даже лучше, но я не смог найти ничего о такой аномалии. Буду рад, если кто-нибудь объяснит, в чем проблема.

Подробнее здесь: https://stackoverflow.com/questions/652 ... vs-sigmoid

Вернуться в «Python»