[英]Why sudden drop in accuracy but loss still decreasing?
我正在使用tensorflow和keras来解决二进制分类问题。
我只有 121 个样本,但有 20.000 个特征。 我知道它的样本太少,特征太多,但它是一个生物学问题(基因表达数据),所以我必须处理它。
我的问题:为什么准确率(训练和测试)上升到 100%,然后下降然后再次上升。 但是损失一直在减少?
精度图:
验证图:
由于我的数据集只有 118 个大样本,因此我只有 24 个测试数据点。 见confusion matrix
:
这是我的神经网络架构:
使用当前设置:{'ann__dropout_rate':0.4,'ann__learning_rate':0.01,'ann__n_neurons':16,'ann__num_hidden':1,'ann__regularization_rate':0.6}
model = Sequential()
model.add(Dense(input_shape, activation="relu",
input_dim=input_shape)) # First Layer
model.add(Dense(n_neurons, activation="relu",
kernel_regularizer=tf.keras.regularizers.l1(regularization_rate)))
model.add(Dropout(dropout_rate))
model.add(Dense(1, activation="sigmoid"))
optimizer = keras.optimizers.Adam(learning_rate=learning_rate)
model.compile(loss="binary_crossentropy",
optimizer=optimizer, metrics=['accuracy'])
return model
谢谢!
如果您还没有这样做,请尝试打乱您的训练数据。 您也可以尝试更大的批量大小。 我还建议在 model.fit 中使用 ReduceLROnPlateau 回调。 文档在这里。 将其设置为监控验证损失,如果在耐心时期后损失未能减少,则将学习率降低 <1 倍。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.