小编bea*_*hum的帖子

激活函数:Softmax 与 Sigmoid

我一直在尝试用 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)
Run Code Online (Sandbox Code Playgroud)

该模型的准确度为 0.501897,损失为 7.595693(该模型在每个时期都停留在这些数字上),但如果我用 Sigmoid 替换 Softmax 激活,准确度约为 0.98,损失为 0.06。为什么 Softmax …

python conv-neural-network softmax activation-function sigmoid

3
推荐指数
1
解决办法
3549
查看次数