keras GAN训练是loss不发生变化,accuracy一直为0.5怎么办

本文介绍了在keras中训练GAN时遇到loss稳定不变及accuracy始终为0.5的解决办法。问题可能源自优化器的选择,如使用Adam导致的。建议更换优化器,例如尝试RMSprop。同时,文章提供了其他可能的解决方案,包括检查数据打乱、网络回传梯度、输入数据标准化、标签错误、参数初始化、卷积层输出等问题。还讨论了二分类和多分类的交叉熵损失函数,并分享了训练GAN的实用技巧,如大卷积核、滤波器数量、标签翻转、软标签、批归一化以及单一类别训练等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给大家分享一下keras GAN训练是loss不发生变化,accuracy一直为0.5怎么办,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨方法吧!

首先谈谈我的是如何解决的:

  • 网络结构:AlexNet
  • 优化器:Adam (这里正是问题所在)
  • 框架:PyTorch

关于优化器,我最开始使用的的是 torch.optim.Adam(),但是训练100个Epoch后,准确率始终在 49% ~ 50%。

解决方法: 换个优化器!我使用的是 torch.optim.SGD(),其他的或许也行,但我还没有尝试。

Note:

出现以上问题时,我们会发现 loss 是 0.69,这是因为输出 0, 1 的概率都是0.5,而 −ln0.5=0.69−ln⁡0.5=0.69 。


网络上也有一些解决方法,可以对照检查自己的代码:

  1. 训练数据需要打乱,要检查每此batch是否都是一个类别,如果是,则没有办法优化;
  2. 检查网络是不是没有回传梯度,而是只做了前向运算;
  3. 检查输入数据是否有做标准化,可能直接传入 0∼2550∼255 像素进去了;
  4. 二分类问题中 0.5 的 acc 接近随机猜测的值,可以检查下标签是否标错;
  5. 检查参数有没有初始化;
  6. 检查第一层
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值