热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【百战GAN】新手如何开始你的第一个生成对抗网络(GAN)任务

大家好,欢迎来到专栏《百战GAN》,我们在公众号已经输出了非常多的GAN相关的理论,这一次我们开设《百战GAN》专栏,在这个专栏里,我们会进行算法的核心思想讲解,代码的详解,模型的

大家好,欢迎来到专栏《百战GAN》,我们在公众号已经输出了非常多的GAN相关的理论,这一次我们开设《百战GAN》专栏,在这个专栏里,我们会进行算法的核心思想讲解,代码的详解,模型的训练等内容。

作者&编辑 | 言有三

本文资源与生成结果展示

【百战GAN】新手如何开始你的第一个生成对抗网络(GAN)任务

【百战GAN】新手如何开始你的第一个生成对抗网络(GAN)任务

本文篇幅:5000字

背景要求:会使用Python,Tensorflow或者Pytorch

附带资料:项目推荐,版本包括Pytorch+Tensorflow

同步平台:有三AI知识星球(一周内)

1 项目背景

生成对抗网络如今在计算机视觉的很多领域中都被广泛应用,需要每一个学习深度学习相关技术的算法人员掌握,我们公众号和知识星球讲述了非常多的理论知识,在这个《百战GAN》专栏中,我们会配合各类实战案例来帮助大家进行提升,本次项目开发需要以下环境:

(1) Linux系统或者windows系统,使用Linux效率更高。

(2) 安装好的Tensorflow,CPU或者GPU训练都可以。

2 原理简介

今天我们要实践的模型是DCGAN和CGAN,DCGAN是第一个全卷积GAN,麻雀虽小,五脏俱全,最适合新人实践。

【百战GAN】新手如何开始你的第一个生成对抗网络(GAN)任务

DCGAN的生成器和判别器都采用了4层的网络结构。生成器网络结构如上图所示,输入为1×100的向量,然后经过一个全连接层学习,reshape为4×4×1024的张量,再经过4个上采样的反卷积网络层,生成64×64的图,各层的配置如下:

【百战GAN】新手如何开始你的第一个生成对抗网络(GAN)任务

判别器输入64×64大小的图,经过4次卷积,分辨率降低为4×4的大小,每一个卷积层的配置如下:

【百战GAN】新手如何开始你的第一个生成对抗网络(GAN)任务

DCGAN并不能控制生成图片的类别,条件GAN(CGAN)则使用了条件控制变量作为输入,是几乎后续所有性能强大的GAN的基础。网络结构如下,其中的y就是条件变量。

【百战GAN】新手如何开始你的第一个生成对抗网络(GAN)任务

对于生成器来说,输入包括z和y,两者会进行拼接后作为输入。对于判别器来说,输入包括了x和y,两者会进行拼接后作为输入,当然为了和z以及x进行拼接,y需要做一些维度变换,即reshape操作。

关于它们的理论更加详细的讲解,大家可以移步有三AI知识星球,或者自行阅读论文。

3 模型训练

接下来我们进行实践,选择tensorflow框架,下面详解具体的工程代码,主要包括:

(1) 生成器和判别器模型的定义。

(2) 损失和优化目标的定义。

3.1 DCGAN类定义

首先我们需要定义一个类,设计好输入输出,__init__函数如下:

# 模型定义

class DCGAN(object):

    def __init__(self, sess, input_height=108, input_width=108, crop=True,

         batch_size=64, sample_num = 64, output_height=64, output_width=64,

         y_dim=None, z_dim=100, gf_dim=64, df_dim=64,

         gfc_dim=1024, dfc_dim=1024, c_dim=3, dataset_name='default',

         max_to_keep=1,

         input_fname_pattern='*.jpg', checkpoint_dir='ckpts', sample_dir='samples', out_dir='./out', data_dir='./data'):

其中参数解释如下:sess表示TensorFlow session,batch_size即批处理大小;z_dim是噪声的维度,默认为100;y_dim是一个可选的条件变量,比如分类标签,用于CGAN;gf_dim是生成器第一个卷积层的通道数;df_dim是判别器第一个卷积层的通道数;gfc_dim是生成器全连接层维度;dfc_dim是判别器全连接层维度;c_dim是输入图像维度,灰度图为1,彩色图为3。

从上述代码可以看出,初始化函数__init__中配置了训练输入图尺寸,批处理大小,输出图尺寸,生成器的输入维度,以及生成器和判别的卷积层和全连接层的若干维度变量。


推荐阅读
  • Window10+anaconda+python3.5.4+ tensorflow1.5+ keras(GPU版本)安装教程 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • OCR:用字符识别方法将形状翻译成计算机文字的过程Matlab:商业数学软件;CUDA:CUDA™是一种由NVIDIA推 ... [详细]
  • 程度|也就是_论文精读:Neural Architecture Search without Training
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文精读:NeuralArchitectureSearchwithoutTraining相关的知识,希望对你有一定的参考价值。 ... [详细]
  • TensorFlow入门上
    前置准备在阅读本文之前,请确定你已经了解了神经网络的基本结构以及前向传播、后向传播的基本原理,如果尚未了解,可以查看下文。神经网络初探​chrer.com也可以直接在我博客阅读Te ... [详细]
  • Yarn已过时!Kubeflow实现机器学习调度平台才是未来
    来源:AI前线本文约6700字,建议阅读10分钟。本文分析了建设分布式训练平台的过程中的痛点所在,为你介绍Kubeflow与其核心组件及其 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文介绍了Python异常的捕获、传递与抛出操作,并提供了相关的操作示例。通过异常的捕获和传递,可以有效处理程序中的错误情况。同时,还介绍了如何主动抛出异常。通过本文的学习,读者可以掌握Python中异常处理的基本方法和技巧。 ... [详细]
  • 本文介绍了蓝桥训练中的闰年判断问题,并提供了使用Python代码进行判断的方法。根据给定的年份,判断是否为闰年的条件是:年份是4的倍数且不是100的倍数,或者是400的倍数。根据输入的年份,输出结果为yes或no。本文提供了相应的Python代码实现。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 用c语言实现线画、填充图元生成算法多边形_【游戏场景剔除】剔除算法综述...
    之前在做场景优化的过程中,看了不少论文和博客阐述不同剔除算法的原理和过程,自己参照着算法去实现了Hiz和软件剔除。一直想写一篇关于剔除算法的综述 ... [详细]
  • Visualizing and Understanding Convolutional Networks(ZFNet网络)论文阅读笔记
    VisualizingandUnderstandingConvolutionalNetworksZFNet网络架构论文阅读笔记2022.4.4论文地址https:arxiv ... [详细]
author-avatar
xao
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有