当前位置: 首页 > 知识库问答 >
问题:

为什么Keras在相同的网络配置下比Pytorch表现更好?

赏梓
2023-03-14

最近,我比较了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 Iter:1215/1219损失:0.450462 acc:0.584101

2019-12-15 18:14:21纪元:9 Iter:1216/1219损失:0.744811 acc:0.293406

2019-12-15 18:14:22纪元:9 Iter: 1217/1219损失:0.387612 acc:0.735630

2019-12-15 18:14:23纪元:9 Iter:1218/1219损失:0.767146 acc:0.364759

最终的keras培训流程如下:

685/690 [============================

686/690 [============================

687/690 [================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

688/690 [============================

689/690 [============================

共有1个答案

姜俊民
2023-03-14

没有任何代码片段很难说。也就是说,一般来说,初始化比你想象的要重要得多。我确信pytorch的默认初始化与keras不同,我过去也遇到过类似的问题。

另一件要检查的事情是优化器参数,确保您不仅使用相同的优化器(sgdadam,...)而且使用相同的参数(lrbeta动量,...)

 类似资料:
  • 但是,我在spring-boot文档中发现了以下内容。https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-configuration-classes.html 它赞成使用Java配置而不是XML配置。Java配置中的更改需要重新编译。然而,这让我想到为什么文档偏爱Java配置。 Internet上已经发

  • 本文向大家介绍dpn网络的pytorch实现方式,包括了dpn网络的pytorch实现方式的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,直接上代码吧! 以上这篇dpn网络的pytorch实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍关于ResNeXt网络的pytorch实现,包括了关于ResNeXt网络的pytorch实现的使用技巧和注意事项,需要的朋友参考一下 此处需要pip install pretrainedmodels 以上这篇关于ResNeXt网络的pytorch实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 我已经开始学习线程同步。 同步方法: 同步块: 什么时候应该使用方法和块? 为什么块比方法更好? 问题答案: 这不是更好的问题,只是有所不同。 同步方法时,实际上是在与对象本身进行同步。对于静态方法,您正在同步到对象的类。因此,以下两段代码以相同的方式执行: 就像您写的一样。 如果要控制到特定对象的同步,或者只想将方法的 一部分 同步到该对象,则指定一个块。如果在方法声明上使用关键字,

  • TLDR: 一个简单的(单隐藏层)前馈Pytorch模型被训练来预测函数的性能大大低于使用Keras构建/训练的相同模型。为什么会这样,可以做些什么来减轻性能差异? 在训练回归模型时,我注意到PyTorch的性能大大低于使用Keras构建的相同模型。 这种现象以前已经被观察和报道过: > 相同的模型在pytorch上产生的结果比在张量流上更差 pytorch中的CNN模型比Tensoflowflo

  • 更多信息 Linux网络硬件选项: ethtool命令查询并设置网络接口关于媒体相关的参数。如:链路速度和双工。它代替了以前的mii-tool命令,但有些系统中两者并存。 只要简单加上接口名就可以查询它的状态。例如,eth0接口(PC主板的网卡接口)启动了自协商并且运行于全速率: 将该接口锁定在100 Mb/s全双工,使用以下命令: ethtool -s eth0 speed 100 duplex