首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Tensorflow教程-对抗神经网络

1、了解对抗神经网络的思想

2、利用对抗神经网络进行手写体分类

源代码

https://github.com/PrivateThink/tensorflow_tutorial/blob/master/17.py

对抗神经网络的主要核心思想就是对抗,这里的对抗可以理解为博弈,举个通俗的例子。

小明是一名新上任的警察,最近遇到了一些麻烦事,经过朝阳群众的举报,最近是市场上出现了一批假币。局长命令小明在一个多月里破案,但是对于无经验的小明来说,这不是一个简单的任务,因为这批假币很难识别出来,假币的仿真程度太高了,所以小明就将假币和真币进行对比,经过一段时间学习后,小明终于找出了假币和真币的区别。

小明好不容易将假币和真币的区别找出来了,但是市场上又出现了一批仿真程度更高的假币,小明不得不重新找出假币和真币的区别。

在上面这个例子中,可以抽象出这么一个过程:制作假币,识别假币,制作仿真程度更高的假币,识别假币。。。。,只要制作假币的人不断升级制作假币的技术,小明就不得不学习识别假币。

对抗神经网络也是有上述的博弈的过程,由识别器和生成器组成,将对抗神经网络用在上述的例子就是,生成器就是制作假币的人,负责制作假币。识别器就是警察小明,负责识别假币和真币的区别。在这个过程中,假币的仿真程度越来越高,小明识别假币的能力也越来越好,这个过程不断的进行优化。

好了,上述就是对抗神经网络的基本思想,接下来就讲解利用对抗神经网络来生成手写体图片。

加载数据和设置参数。

设置权重和偏置

构建网络

上述程序创建了一个生成器,生成器输入随机的数据,然后生成越来越像手写体的图片。

创建了两个识别器,一个识别器负责识别真实的手写体图片,另外一个识别器负责识别生成器生成的图片。在创建网络的过程中,利用了简单的感知机。

因为对抗神经网络有生成器和识别器,所以要计算的损失函数也有两个,一个是生成器的损失函数,另外一个是识别器的损失函数,特别注意的是,识别器的损失函数中包括了生成器的输出和真实图片的输入。每个优化器的训练变量在默认情况下,每个优化器都会更新所有变量,所以我们需要为它们中的每一个精确地更新特定的变量。

训练

生成器生成图片

训练好网络以后,就可以利用生成器进行生成手写体图片。生成的图片如下:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180731G0RWYA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券