最近,我在同一数据集上比较了Keras版本和Pytorch版本的unet ++实现。但是,使用Keras时,损耗会持续下降,并且在10个周期后精度会更高;而使用Pytorch,损耗会不均匀地下降,并且在10个周期后精度会下降。任何人都遇到过此类问题并有任何答案吗?
最后的pytorch培训过程如下:
2019-12-15 18:14:20时代:9迭代:1214/1219亏损:0.464673 acc:0.581713
2019-12-15 18:14:21时代:9迭代:1215/1219亏损:0.450462 acc:0.584101
2019-12-15 18:14:21时代:9迭代:1216/1219亏损:0.744811 acc:0.293406
2019-12-15 18:14:22时代:9迭代:1217/1219亏损:0.387612 acc:0.735630
2019-12-15 18:14:23时代:9迭代:1218/1219亏损:0.767146 acc:0.364759
最后的keras培训过程如下:
685/690 [===========================>。]-ETA:2秒-损失:0.4940-acc:0.7309
686/690 [===========================>。]-ETA:1s-损失:0.4941-acc:0.7306
687/690 [===========================>。]-ETA:1s-损失:0.4939-acc:0.7308
688/690 [===========================>。]-ETA:0s-损失:0.4942-acc:0.7303
689/690 [===========================>。]-ETA:0s-损失:0.4943-acc:0.7302
答案 0 :(得分:0)
好吧,如果没有任何代码段,很难说。话虽如此,通常来说,初始化比您想象的要重要得多。我确定pytorch的默认初始化与keras不同,并且我在过去也遇到过类似的问题。
要检查的另一件事是优化程序参数,请确保不仅使用相同的优化程序(sgd
,adam
,...),而且要使用相同的参数({{1 }},lr
,beta
,...)