解决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中处理时间的几种方法小结
Apr 09 Python
Python正则简单实例分析
Mar 21 Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 Python
django用户登录和注销的实现方法
Jul 16 Python
浅述python2与python3的简单区别
Sep 19 Python
python实现归并排序算法
Nov 22 Python
python石头剪刀布小游戏(三局两胜制)
Jan 20 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
python+selenium+PhantomJS抓取网页动态加载内容
Feb 25 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
python用什么编辑器进行项目开发
Jun 17 Python
Python pymsql模块的使用
Sep 07 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图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
php实现文章评论系统
2019/02/18 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
用javascript操作xml
2006/11/04 Javascript
JS input 数字验证代码
2009/07/30 Javascript
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
Python 解析XML文件
2009/04/15 Python
跟老齐学Python之list和str比较
2014/09/20 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
python二进制文件的转译详解
2019/07/03 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
公务员职务工作的自我评价
2013/11/01 职场文书
护士毕业实习感言
2014/03/05 职场文书
事业单位个人总结
2015/02/12 职场文书
教你用Python写一个植物大战僵尸小游戏
2021/04/25 Python
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers