Python 为什么准确度突然下降,但损失仍在减少?
我使用tensorflow和keras来解决二元分类问题 我只有121个样本,但有20000个特征。我知道样本太少,特征太多,但这是一个生物学问题(基因表达数据),所以我必须处理它 我的问题:为什么准确度(训练和测试)会上升到100%,然后下降,然后再次上升。但损失一直在减少 精度图: 验证图: 因为我的数据集只有118个样本,所以我只有24个测试数据点。请参见混淆矩阵: 这是我的神经网络架构: 使用当前设置: {'ann_uu辍学率:'0.4',ann_u学习率:'0.01',ann_un_u神经元:'16',ann_unum_u隐藏率:'1',ann_u正则化率:'0.6}Python 为什么准确度突然下降,但损失仍在减少?,python,tensorflow,floating-accuracy,Python,Tensorflow,Floating Accuracy,我使用tensorflow和keras来解决二元分类问题 我只有121个样本,但有20000个特征。我知道样本太少,特征太多,但这是一个生物学问题(基因表达数据),所以我必须处理它 我的问题:为什么准确度(训练和测试)会上升到100%,然后下降,然后再次上升。但损失一直在减少 精度图: 验证图: 因为我的数据集只有118个样本,所以我只有24个测试数据点。请参见混淆矩阵: 这是我的神经网络架构: 使用当前设置: {'ann_uu辍学率:'0.4',ann_u学习率:'0.01',ann_u
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中使用reducelRon回调。建立文档以监控验证损失,并通过一个因素降低学习率我实现了你的@Gerry p想法(Shuffle=true)和reducelRonplation(批量大小为64)。我的回电现在是:
reduce\u lr=reducelronplatform(监视器=val\u loss',系数=0.1,耐心=5,最小\u lr=1e-6,详细=1)
early\u stop=early stop(监视器='val\u loss',最小增量=0,耐心=20,模式='auto')
我的准确度和损失现在看起来如下:
我想说它还是太合适了
混淆矩阵:
1000个纪元,只需几个样本?你像我知道的那样过度拟合了这些数据。这就像一个测试,因为我想知道为什么准确率再次下降,但损失仍然在减少。(也实施了EarlyStopping)谢谢你的帮助!你能解释一下为什么我会看到这种精度曲线吗?根据图表,它看起来不像是过度拟合。过度拟合的特征是训练损失持续减少,而验证损失开始增加。这通常发生在以后的年代。同样,只有121个样本,在训练和测试数据中看到显著的波动也就不足为奇了。例如,如果您只有10个验证图像,则检测中仅1个变化的差异将使精度摆动10%。