我有一个训练数据集和测试数据集,每个数据集分别包含大约 1300 个和 400 个样本。我运行网格搜索,它创建 x 个深度网络(使用 softmax 作为输出,使用 RELU 作为隐藏层,使用梯度下降),在预先指定的隐藏层数量中具有不同数量的隐藏节点。例如,如果我说检查所有单层模型,则在此示例中,网格搜索将创建 100 个深度网络,在单层中具有 1、2、3...100 个隐藏节点。对于每个模型和每个时期,网格搜索将训练模型并通过使用预先指定的批量大小向模型提供随机批处理的训练/测试数据来测试模型。然后,该程序会在所有 100 个模型的每个训练周期后给出 AUC 值。因此,在每个训练周期后,我们都会得到 100 个包含所有 AUC 值的输出文件。然后我可以使用解析器浏览这些文件,看看最佳模型是什么以及最佳时期数是多少。
但是,当我运行网格搜索时,我注意到第一次运行中的最佳模型与后续运行中的最佳模型不同。我将此归因于输入模型进行训练和测试的随机批处理,但我如何才能真正找到“最佳模型”?
最佳答案
我认为“最佳”是相当主观的,您可能会发现一个特定模型在预测特定数据集时表现更好,而另一个模型在另一个模型上表现稍好。一个好的衡量标准(在我看来)是均方根误差。
某些人工智能包可以设置为消除随机性,例如 H2O,因此如果您下次放入相同的“种子”,您可以复制相同的结果。
希望对你有帮助
关于machine-learning - 为什么每次运行深度学习程序时,我的最佳性能模型都会不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39458067/