我正在尝试一个简单的 Keras 项目,其中包含用于二进制分类的密集层。大约300000行数据,标签是
training_set['TARGET'].value_counts()
0 282686
1 24825
我的模型看起来像这样
def build_model():
model = models.Sequential()
model.add(layers.Dense(64, activation='relu', kernel_regularizer=regularizers.l2(0.001),
input_shape=(train_data.shape[1],)))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(32, kernel_regularizer=regularizers.l2(0.001), activation='relu'))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
return model
所以它是以 sigmoid 结尾的二元分类。我的理解是我应该得到接近 0 或接近 1 的值?我尝试了不同的模型架构、超参数、时期、批量大小等,但是当我在验证集上运行 model.predict 时,我的值永远不会超过 0.5。这里有一些样本。
20 epochs, 16384 batch size
max 0.458850622177124, min 0.1022530049085617
max 0.47131556272506714, min 0.057787925004959106
20 epochs, 8192 batch size
max 0.42957592010498047, min 0.060324762016534805
max 0.3811708390712738, min 0.022215187549591064
20 epochs, 4096 batch size
max 0.3163970410823822, min 0.0657803937792778
20 epochs, 2048 batch size
max 0.21799422800540924, min 0.03832605481147766
这是否表明我做错了什么?