【发布时间】:2021-03-23 06:56:35
【问题描述】:
我一直在尝试使用 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(模型在每个时期都停留在这些数字上)但是如果我用 Sigmoid 替换 Softmax 激活,准确率大约是 0.98 和损失 0.06。为什么 Softmax 会发生这种奇怪的事情?我能找到的所有信息是这两个激活是相似的,softmax 甚至更好,但我找不到任何关于这种异常的信息。如果有人能解释问题所在,我会很高兴。
【问题讨论】:
标签: python conv-neural-network softmax activation-function sigmoid