【发布时间】:2020-10-26 11:13:17
【问题描述】:
我有一个 2 层神经网络,我正在对大约 10000 个特征(基因组数据)进行训练,我的数据集中有大约 100 个样本。现在我意识到,无论何时我运行我的模型(即编译和拟合),即使我保持训练/测试/验证拆分不变,我也会得到不同的验证/测试准确性。有时约为 70%,有时约为 90%。
由于 NN 的随机性,我预计会有一些变化,但这些强烈的波动是否可能是其他迹象?
【问题讨论】:
-
当您尝试不同的优化器时,这种行为会改变吗?
-
你的模型训练了多少个 epoch?如果只是少数,您可能看到的差异可能是由于随机初始化造成的。另一个候选者是优化器的学习率。对于具有数万个参数的神经网络来说,100 个样本是非常少的。因此,您可能需要以相对较高的学习率(例如 1e-2 左右)运行 500 个 epoch,才能看到运行之间的一致性。
-
@MichaelJanz 优化器究竟如何影响 val acc 的变化?我尝试了一些不同的优化器,但没有发现差异。验证 acc 至少波动 +/-8。
-
@Addy 根据学习率,我在 epoch 上尝试了不同的数字,以避免训练准确度一直上升到 100%。学习率高则少,反之亦然。我也运行了 50 个 epoch,但仍然看到波动。如果我以高学习率尝试 500,我不会严重过度拟合神经网络吗?或者你是什么意思?
-
你能分享一下训练/验证/测试数据集的大小吗?你的层的大小(我想那些是密集层)和你的输出是多少?此外,您是否实现了一致的训练精度?
标签: tensorflow neural-network training-data genome