解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题


Posted in Python onJuly 02, 2020

1、Binary Cross Entropy

常用于二分类问题,当然也可以用于多分类问题,通常需要在网络的最后一层添加sigmoid进行配合使用,其期望输出值(target)需要进行one hot编码,另外BCELoss还可以用于多分类问题Multi-label classification.

定义:

For brevity, let x = output, z = target. The binary cross entropy loss is
loss(x, z) = - sum_i (x[i] * log(z[i]) + (1 - x[i]) * log(1 - z[i]))

对应的代码为:

def binary_crossentropy(t,o):
return -(t*tf.log(o+eps) + (1.0-t)*tf.log(1.0-o+eps))

2、Categorical cross-entropy

解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题

p are the predictions, t are the targets, i denotes the data point and j denotes the class.

适用于多分类问题,并使用softmax作为输出层的激活函数的情况。

补充知识:训练GAN的一些小贴士

下面是我认识到自己犯过的一些错误,以及我从中学到的一些东西。所以,如果你是GANs的新手,并没有看到在训练方面取得很大的成功,也许看看以下几个方面会有所帮助:

1、大卷积核和更多的滤波器

更大的卷积核覆盖了前一层图像中的更多像素,因此可以查看更多信息。5x5的核与CIFAR-10配合良好,在判别器中使用3x3核使判别器损耗迅速趋近于0。对于生成器,你希望在顶层的卷积层有更大的核,以保持某种平滑。在较低的层,我没有看到改变内核大小的任何主要影响。

滤波器的数量可以大量增加参数的数量,但通常需要更多的滤波器。我在几乎所有的卷积层中都使用了128个滤波器。使用较少的滤波器,特别是在生成器中,使得最终生成的图像过于模糊。因此,看起来更多的滤波器可以帮助捕获额外的信息,最终为生成的图像增加清晰度。

2、标签翻转(Generated=True, Real=False)

虽然一开始看起来很傻,但对我有用的一个主要技巧是更改标签分配。

如果你使用的是Real Images = 1,而生成的图像= 0,则使用另一种方法会有所帮助。正如我们将在后面看到的,这有助于在早期迭代中使用梯度流,并帮助使梯度流动。

3、使用有噪声的标签和软标签

这在训练判别器时是非常重要的。硬标签(1或0)几乎扼杀了早期的所有学习,导致识别器非常快地接近0损失。最后,我使用0到0.1之间的随机数表示0标签(真实图像),使用0.9到1.0之间的随机数表示1标签(生成的图像)。在训练生成器时不需要这样做。

此外,增加一些噪音的训练标签也是有帮助的。对于输入识别器的5%的图像,标签被随机翻转。比如真实的被标记为生成的,生成的被标记为真实的。

4、使用批归一化是有用的,但是需要有其他的东西也是合适的

批归一化无疑有助于最终的结果。添加批归一化后,生成的图像明显更清晰。但是,如果你错误地设置了卷积核或滤波器,或者识别器的损失很快达到0,添加批归一化可能并不能真正帮助恢复。

5、每次一个类别

为了更容易地训练GANs,确保输入数据具有相似的特征是很有用的。例如,与其在CIFAR-10的所有10个类中都训练GAN,不如选择一个类(例如,汽车或青蛙)并训练GANs从该类生成图像。DC-GAN的其他变体在学习生成多个类的图像方面做得更好。例如,以类标签为输入,生成基于类标签的图像。但是,如果你从一个普通的DC-GAN开始,最好保持事情简单。

6、查看梯度

如果可能的话,试着监控梯度以及网络中的损失。这些可以帮助你更好地了解训练的进展,甚至可以帮助你在工作不顺利的情况下进行调试。

理想情况下,生成器应该在训练的早期获得较大的梯度,因为它需要学习如何生成真实的数据。另一方面,判别器并不总是在早期获得较大的梯度,因为它可以很容易地区分真假图像。一旦生成器得到足够的训练,判别器就很难分辨真假图像。它会不断出错,并得到大的梯度。

以上这篇解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python字典多条件排序方法实例
Jun 30 Python
跟老齐学Python之玩转字符串(1)
Sep 14 Python
python对指定目录下文件进行批量重命名的方法
Apr 18 Python
python中sys.argv参数用法实例分析
May 20 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
python爬虫之xpath的基本使用详解
Apr 18 Python
Python wxPython库使用wx.ListBox创建列表框示例
Sep 03 Python
Python关于excel和shp的使用在matplotlib
Jan 03 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
Python计算IV值的示例讲解
Feb 28 Python
Python 利用OpenCV给照片换底色的示例代码
Aug 03 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 #Python
如何基于Python爬取隐秘的角落评论
Jul 02 #Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 #Python
Python使用tkinter实现摇骰子小游戏功能的代码
Jul 02 #Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 #Python
python脚本和网页有何区别
Jul 02 #Python
keras:model.compile损失函数的用法
Jul 01 #Python
You might like
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
解决php表单重复提交实现方法
2015/09/29 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
表单元素值获取方式js及java方式的简单实例
2016/10/15 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
2019/10/28 Javascript
JS实现放烟花效果
2020/03/10 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
Python3中详解fabfile的编写
2018/06/24 Python
用Python在Excel里画出蒙娜丽莎的方法示例
2020/04/28 Python
python批量处理多DNS多域名的nslookup解析实现
2020/06/28 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
英语求职信范文
2014/05/23 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python
Python实现双向链表基本操作
2022/05/25 Python