keras的DNN模型和pytorch的DNN模型有什么区别吗?

jfewjypa  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(100)

这是我用torch和keras训练DNN的代码。我用它们训练同样的数据,但最后得到完全不同的AUC结果(keras版本达到0.74,torch版本达到0.67)。所以我很困惑!而且我试了很多次,我的结果仍然是不同的。这两个模型有什么区别吗?
第一个

eufgjt7s

eufgjt7s1#

网络的结果取决于权值初始化方案,Keras和Pytorch有不同的权值初始化方案,Keras使用Glorot,Pytorch使用Kaming。
即使使用相同的方案,结果也不会相同(但会接近),因为每次开始新的训练时,权重初始化都会不同。

m1m5dgzv

m1m5dgzv2#

最后我找到了我遇到的错误的真实的原因,它与模型结构或参数无关,实际上sklearn的roc_auc_score函数的错误输入才是导致这个错误的直接原因。
我们知道,sklearn.metrics.roc_auc_score至少需要y_truey_score,其中y_true是数据集的真实的标签,y_score是标签1的预测概率(对于二进制任务)。
但是,当我使用torch的输出来计算两个指标(准确性和AUC)时,我将输出转换为0-1向量,所以我的y_score不再是概率,而是0-1向量。
然后错误发生了......

相关问题