呼吁深度学习专家。
嘿,我最近正在使用python中的tensorflow进行色调映射训练图像。为了获得更好的结果,我专注于使用贾斯汀·约翰逊(Justin Johnson)从this paper引入的感知损失。
在我的实现中,我使用了丢失的所有3个部分:从vgg16提取的功能丢失;传输图像和真实地面图像的L2像素级损失;以及总变化损失。我把它们概括为反向传播的损失。
从功能 yˆ =argminλcloss_content(y,yc)+λsloss_style(y,ys)+λTVloss_TV(y)
在本文中,我们可以看到损失的权重为3个,即λ。在整个训练过程中,三个λ的值可能是固定的。
我的问题是,如果我在每个时期(或几个时期)动态更改λ以调整这些损失的重要性,是否有意义? 例如,感知损失在前几个时期急剧收敛,而像素级的12损失收敛得相当慢。因此,对于含量损失,权重λs可能应该更高,比如说0.9,而对于其他元素,则更低。随着时间的流逝,像素级别的损失对于使图像平滑并最大程度地减少伪影将变得越来越重要。因此,最好将其调整得更高一些。就像根据不同时期改变学习率一样。
博士后督导我直接反对我的想法。他认为这是在动态改变培训模型,并且可能导致培训不一致。
所以,优点和缺点,我需要一些想法...
谢谢!
答案 0 :(得分:0)
在不了解您正在使用的数据的情况下很难回答这个问题,但是简而言之,动态丢失实际上并不会产生太大影响,而可能完全相反。 如果您使用的是Keras,则可以简单地运行类似于以下内容的超参数调谐器,以查看是否有任何效果(相应地更改损耗): buy/download the 236-pg 2012-version PDF of the standard for £15.00 here
我只在较小的模型上这样做(太浪费时间了),但本质上,最好保持不变,也避免惹怒您的主管:D
如果您运行的是不同的ML或DL库,则每个库都有优化器,仅Google即可。最好在群集上过夜运行它们,但是它们通常会为您提供足够好的模型优化版本。
希望有帮助,祝你好运!