tensorflow学习笔记---2--dcgan代码学习

tiny_player~~~ tiny_player~~~     2022-08-29     184

关键词:

以mnist数据训练为例,学习DCGAN(deep convolutional generative adversarial networks)的网络结构。

代码下载地址https://github.com/carpedm20/DCGAN-tensorflow

注1:发现代码中以mnist为训练集的网络和以无标签数据集(以下简称unlabeled_dataset)为训练集的网络不同,结构有别。以下笔记主要针对前者(Generator=3个ReLU+1个Sigmoid,Discriminator=)。

注2:事实上,以unlabeled_dataset为训练集的网络也同原网页中所画的Generator有一些不同(事实上,区别是每个conv层的filter个数被减半了。原因可能为了减少网络参数利于测试者训练?)。除此以外,结构相同。Discriminator的结构与Generator的结构正好对称。

 

原代码中对于有label的数据集,Generator和Discriminator的网络结构均只有两个卷积层。

预备:batch_size=64, mnist图片大小28*28*c_dim,其中c_dim=1为颜色维数,类别数10;随机输入维数z_dim=100

Generator 部分

step1(获得输入z):服从均匀分布的输入样本z(shape=64,100)与具有one-hot形式的标签y (shape=64,10)级联,整体作为Generator的输入z (shape=64,110)

step2(获得第一个非线性层的输出h0): 通过线性变换将z变换为维数为gfc_dim=1024的数据,对其块归一化之后进行非线性ReLU变换,得到h0 (shape=64,1024);将h0与y级联,整体作为下一层的输入h0 (shape=64,1034)

step3(获得第二个非线性层的输出h1):通过线性变换将h0变换为维数为128*7*7=6272的数据,对其块归一化之后进行非线性ReLU变换,得到h1 (shape=64,6272);将h1进行reshape操作得到h1(shape=64,7,7,128);将h1与yb(yb为y的reshape形式,即最后一维为label维,yb的shape=64,1,1,10)级联,整体作为下一层的输入h1 (shape=64,7,7,139)

step4(获得第三个非线性层的输出h2):通过deconv2d操作,用128个filter,将h1变换为维数为64*14*14*128的数据,对其块归一化之后进行非线性ReLU变换,得到h2 (shape=64,14,14,128);将h2与yb级联,整体作为下一层的输入h2 (shape=64,14,14,139)

step5(获得最终的生成图像generated_image):通过deconv2d操作,用c_dim个filter,将h1变换为维数为64*28*28*1的数据,不做块归一化,进行非线性Sigmoid变换,得到generated_image(shape=64,28,28,1)

Discriminator 部分

step1(获得输入x):真实/生成图像image(shape=64,28,28,1)和yb(shape=64,1,1,10)级联,整体作为Discriminator的输入x(shape=64,28,28,11)

step2(获得第一个卷积层的输出h0):用c_dim+y_dim=1+10=11个大小为5*5*11的filter对输入x进行二维卷积操作,随后进行非线性LeakyReLU变换,得到h0 (shape=64,14,14,11);将h0与标签yb级联,整体作为下一层的输入h0(shape=64,14,14,21)

step3(获得第二个卷积层的输出h1):用df_dim+y_dim=64+10=74个大小为5*5*21的filter对h0进行二维卷积操作,块归一化(这层有)之后进行非线性LeakReLU变换,得到h1(shape=64,7,7,74);对h1进行reshape拉成每个样本对应一维数据,并与标签y (shape=64,10)级联,整体作为下一层的输入h1(shape=64,7*7*74+10=64,3636)

step4(获得第三个卷积层的输出h2):对h1进行线性变换,输出维数为dfc_dim=1024的数据,块归一化(这层有)操作之后进行非线性LeakyReLU变换,得到h2 (shape=64,1024);将h2与y进行级联,整体作为下一层的输入h2(shape=64,1034

step5(获得最终输出h3):对h2进行线性变换,输出维数为1(用来判断真假)的数据,非线性Sigmoid变换之后得到最终输出h3 (shape=64,1)  (注:实际代码中将线性变换之后的结果也进行了输出,用以计算loss)

Loss部分

真实图像和生成图像这两种图像都需要输入Discriminator得到对应的loss,整体作为Discriminator的loss;

而Generator的loss只包含有关生成图像部分;

用Adam训练,每训练两次Generator,才对Discriminator进行一次训练,防止Discriminator的loss的导数为0(无法更新)。

 

tensorflow学习笔记

importtensorflowastfimportnumpyasnpimportmathimporttensorflow.examples.tutorials.mnistasmnsess=tf.InteractiveSession()mnist=mn.input_data.read_data_sets("E:\Python35\Lib\site-packages\tensorflow\ 查看详情

tensorflow学习笔记一——justgetstarted

  我现在什么都不知道,打算开始学习tensorflow作为机器学习入门的开始。  昨天完成了对tensorflow官方入门介绍的学习,了解了tensorflow的基本原理和编程方法。我们在进行tensorflow编程时,程序的逻辑是:建立数据流图-->... 查看详情

《tensorflow实战google深度学习框架(第二版)》学习笔记及书评(代码片段)

《TensorFlow实战Google深度学习框架(第二版)》学习笔记文章目录《TensorFlow实战Google深度学习框架(第二版)》学习笔记写在前面1.TensorFlow图像处理函数学习总结2.TensorFlow图像预处理完整样例3.TensorFlow多线程输入... 查看详情

tensorflow学习笔记3:tensorboard可视化学习

TensorBoard简介Tensorflow发布包中提供了TensorBoard,用于展示Tensorflow任务在计算过程中的Graph、定量指标图以及附加数据。大致的效果如下所示, TensorBoard工作机制TensorBoard通过读取TensorFlow的事件文件来运行。TensorFlow的事件文件... 查看详情

tensorflow学习笔记(代码片段)

TensorFlow学习笔记一、常量表示importtensorflowastfm1=tf.constant([[3,3]])m2=tf.constant([[2],[3]])product=tf.matmul(m1,m2)print(product)sess=tf.Session()result=sess.run(product)print(result)sess.close()withtf.S 查看详情

tensorflow基础笔记参考资源学习文档

1官方文档https://www.tensorflow.org/api_docs/2极客学院中文文档http://www.tensorfly.cn/tfdoc/api_docs/python/array_ops.html3TensorFlow基础笔记(2)minist分类学习 查看详情

tensorflow学习笔记2:aboutsession,graph,operationandtensor

简介上一篇笔记:Tensorflow学习笔记1:GetStarted 我们谈到Tensorflow是基于图(Graph)的计算系统。而图的节点则是由操作(Operation)来构成的,而图的各个节点之间则是由张量(Tensor)作为边来连接在一起的。所以Tensorflow的计... 查看详情

tensorflow学习笔记

一.背景  本人学习Tensorflow是为了完成毕业设计的工作,之前并没有用过其他的深度学习平台,Tensorflow作为当前很流行的一个平台,无论是教学文档,还是使用其开发的工程,这些资源都是很丰富的,所以很适合新手来进行入... 查看详情

tensorflow学习笔记:共享变量

本文是根据TensorFlow官方教程翻译总结的学习笔记,主要介绍了在TensorFlow中如何共享参数变量。教程中首先引入共享变量的应用场景,紧接着用一个例子介绍如何实现共享变量(主要涉及到tf.variable_scope()和tf.get_variable()两个接口... 查看详情

tensorflow学习笔记一

今天开始正式学习Tensorflow, 首先从源码开始,装好了CentOS7X64,并且安装了桌面版本,计划能够构建Tensorflow成功首先从Github从Fork了一个版本到我的Git账号,然后clone到本地首先要了解Bazel,这是什么东西?这是谷歌代码构建工... 查看详情

tensorflow学习笔记

tensorflow一些函数:1、tf.ones(shape,type=tf.float32,name=None)   tf.ones([2,3],int32)==>[[1,1,1],[1,1,1]] 2、tf.zeros(shape,type=tf.float32,name=None)   tf.zeros([2,&nb 查看详情

tensorflow学习笔记一(代码片段)

1、tensorflow中的数据类型importtensorflowastfimportnumpyasnp#张量可以是数字、列表、ndarray#使用列表创建张量print(tf.constant([2,3]))print(tf.constant([[2,3],[1,4]]))#tensorflow2默认使用Eager动态图机制print(type(tf.constant([[2,3],[1,4] 查看详情

tensorflow学习笔记入门(代码片段)

一、TensorFlow是什么?是谷歌开源的机器学习实现框架,本文从Python语言来理解学习Tensorflow以及机器学习的知识。TensorFlow的API主要分两个层次,核心层和基于核心层的高级API。核心层面向机器学习的研究人员,以... 查看详情

tensorflow学习笔记1

什么是TensorFlow? TensorFlow是Google开发的一款神经网络的Python外部的结构包,也是一个采用数据流图来进行数值计算的开源软件库.TensorFlow让我们可以先绘制计算结构图,也可以称是一系列可人机交互的计算操作,然后把编辑好的Pyth... 查看详情

tensorflow学习笔记:mnist机器学习入门

...,首先从深度学习的入门MNIST入手。通过这个例子,了解Tensorflow的工作流程和机器学习的基本概念。一 MNIST数据集    MNIST是入门级的计算机视觉数据集,包含了各种手写数字的图片。在这个例子中就是通过机... 查看详情

学习笔记tf050:tensorflow源代码解析

TensorFlow目录结构。ACKNOWLEDGMENTS#TensorFlow版本声明ADOPTERS.md#使用TensorFlow的人员或组织列表AUTHORS#TensorFlow作者的官方列表BUILDCONTRIBUTING.md#TensorFlow贡献指导ISSUE_TEMPLATE.md#提ISSUE的模板LICENSE#版权许可README.mdRELEASE.md#每次发版 查看详情

tensorflow学习笔记——安装和运行

参考的资料:1.官网2.tensorflow官方文档中文版安装的是Python2.7;CPUsupport(noGPUsupport),版本是1.1pipinstalltensorflow安装完成之后,进入python终端importtensorflowastf#创建常量矩阵,类型是float,去掉.的Intmatrix1=tf.constant([[3.,3.]])matrix2=tf.cons 查看详情

tensorflow学习笔记(转)

转自:http://blog.csdn.net/qq_32166627/article/details/52734387侵删。 tensorflow中有一类在tensor的某一维度上求值的函数。如: 求最大值tf.reduce_max(input_tensor,reduction_indices=None,keep_dims=False,name=None)求平均值tf.red 查看详情