Keras中自定义train_step函数的影响

lxkprmvk  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(228)

我在理解keras中的自定义train_step函数是如何工作的方面遇到了一个问题,希望能从社区中获得一些见解。
我的问题:我正在为Face Super Resolution构建一个网络(更具体地说,这一个:https://ieeexplore.ieee.org/document/9428360),我使用一个自定义模型来构建它的逻辑。我有一些指标,我想绘图,当我返回所有的指标,从自定义的train_step函数绘图我得到非常糟糕的结果,当我只返回网络损失的结果是好一点(远不完美,但这是另一个问题)。示例:

第一个测试(图像)只返回网络损耗,第二个测试(图像)返回我需要绘制的所有指标。
你可以检查第一个测试和第二个测试之间的提交,以更好地理解我所说的:https://github.com/JoaoPicolo/UFPR-DissertationFSR/commit/6bf171a155b99f64042223942089eec0d2349803
完整代码可在以下网址获得:https://github.com/JoaoPicolo/UFPR-DissertationFSR/tree/main/src/DIDnet
我已经尝试过更改train_step返回参数,并观察到当我只更改它们时,结果是不同的。Keras的文档中是否有任何部分解释了这对网络的影响?我想找不到。
在我引用的最后一次提交中,我也改变了指标参数,但我确信这不是影响最终结果的原因,因为我之前的测试没有改变它,并且得到了相同的行为。

camsedfj

camsedfj1#

好吧,我终于发现问题了。它与train_step函数无关,而是与我使用的自定义回调函数有关。
结果是在回调函数中我覆盖了Model类的self.metrics属性,所以更改这个变量的名称就解决了我的问题。链接到解决方案:https://github.com/JoaoPicolo/UFPR-DissertationFSR/commit/eda02729499b4dacd632e826e5fd625339b8f1ac
我会把这个放在这里作为参考,如果将来有人遇到这个我花了几天时间才解决的错误。

相关问题