博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TensorFlow应用实战-12-编写DCGAN的判别模型
阅读量:6565 次
发布时间:2019-06-24

本文共 1835 字,大约阅读时间需要 6 分钟。

编写DCGAN的判别模型

新建一个文件network.py 用来定义我们的生成器和判别器的模型

# -*- coding: UTF-8 -*-"""DCGAN 深层卷积的生成对抗网络"""import keras as tf.keras

首先定义判别器模型

有一个卷积的判别器和一个反卷积的生成器。卷积的判别器判断我们生成的样本和真实的样本是否匹配。

反卷积的生成器用于从一些随机的噪声数据。矩阵一样的数据生成我们的假样本。

生成器(Generator) 基本原理

mark
mark

由简单到复杂地反向生成。

判别器(Discriminator) 基本原理

mark
mark

逐层深入 “抽丝剥茧” 地 “理解” 一张图片或其他事物

mark
mark

我们之前使用过的卷积神经网络是这样的。我们判别器模型就类似于这个卷积神经网络的图。

输入一张图片一层一层抽丝剥茧地提取元素。我们先写判别器,因为它是一个正向的传播网络。而DCGAN里面的生成器却是一个有点类似反向的卷积神经网络的。

从噪声去生成最后的图片。

我们先定义判别器的模型

# 定义判别器模型def discriminator_model():    # sequential,线性堆叠器。逐层添加网络    model = tf.keras.models.Sequential()    # 添加一层卷积:     model.add(tf.keras.layers.Conv2D(        64,  # 64 个过滤器,输出的深度(depth)是 64        (5, 5),  # 过滤器在二维的大小是(5 * 5)        padding='same',  # same 表示输出的大小不变,因此需要在外围补零2圈        input_shape=(64, 64, 3)  # 输入形状 [64, 64, 3]。3 表示 RGB 三原色    ))    model.add(tf.keras.layers.Activation("tanh"))  # 添加 Tanh 激活层    model.add(tf.keras.layers.MaxPool2D(pool_size=(2, 2)))  # 池化层    model.add(tf.keras.layers.Conv2D(128, (5, 5)))    model.add(tf.keras.layers.Activation("tanh"))    model.add(tf.keras.layers.MaxPool2D(pool_size=(2, 2)))    model.add(tf.keras.layers.Conv2D(128, (5, 5)))    model.add(tf.keras.layers.Activation("tanh"))    model.add(tf.keras.layers.MaxPool2D(pool_size=(2, 2)))    model.add(tf.keras.layers.Flatten())  # 扁平化    model.add(tf.keras.layers.Dense(1024))  # 1024 个神经元的全连接层    model.add(tf.keras.layers.Activation("tanh"))    model.add(tf.keras.layers.Dense(1))  # 1 个神经元的全连接层    model.add(tf.keras.layers.Activation("sigmoid"))  # 添加 Sigmoid 激活层    return model

定义判别器之后再去定义生成器,就有点像把模型倒转一下的操作。sequential像一个汉堡包的模子。我们可以通过add方法去添加层。

keras.layer中的层都可以被添加进来。conv2d

64个过滤器对于图像进行64次扫描。每扫描一次输出的深度就增加一层。

(5,5) 过滤器在二维平面的高和宽,扫描的区域

第三个参数是是否补padding。 补0,same表示输出的大小不变,因此需要在外围补零两圈。

输入形状 64 64 3 彩色图片

tanh激活层,池化层(maxpooling),宽高各缩小2 (亚采样)

128个过滤器 过滤器大小。

全连接层输出维度1024

转载地址:http://hocjo.baihongyu.com/

你可能感兴趣的文章
如何查看Ubuntu下已安装包版本号
查看>>
VS2017 配置ImageMagick
查看>>
【Leetcode】Search in Rotated Sorted Array
查看>>
redis3.0.0 集群安装详细步骤
查看>>
FutureTask——另一种闭锁的实现
查看>>
Linux 用户和用户组管理
查看>>
tomcat架构分析(valve源码导读)
查看>>
spring中InitializingBean接口使用理解(转)
查看>>
基于php5.5使用PHPMailer-5.2发送邮件
查看>>
InstallShield 2012 Spring新功能试用(16): Suite/Advanced UI 或 Advanced UI安装程序能在安装时进行输入合法性校验与反馈...
查看>>
C#面试宝典
查看>>
基金项目的英文
查看>>
《软件性能测试与LoadRunner实战教程》喜马拉雅有声图书上线
查看>>
ios 字典转模型
查看>>
Java类集
查看>>
类的生命周期
查看>>
php apache用户写文件夹权限设置
查看>>
浅析rune数据类型
查看>>
普通用户开启AUTOTRACE 功能
查看>>
游侠原创:推荐一款免费的Syslog转发工具
查看>>