【Tensorflow tf 掏粪记录】笔记四——tensorflow搭建GAN神经网络

2023-11-22 11:20

本文主要是介绍【Tensorflow tf 掏粪记录】笔记四——tensorflow搭建GAN神经网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GAN,对抗神经网络。简单通俗的说就是类似老顽童的左右互博术这种东西。机器试图自己打败自己,毕竟世界上最大的敌人是自己。哈哈哈哈。

2018/3/31 18:35 pm
下面是我最新训练生成的结果,网络深度为512,个别的类似3,5,2的复杂的数我是用1024深的网络指定标签针对训练的。
这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述

简要介绍GAN


GAN神经网络主要就是在网络中有一个生成器(Generator)一个鉴别器(Discriminator),鉴别器鉴别真假以及预测标签。生成器则生成目标文件送去鉴别器鉴别。生成器努力生成鉴别器无法鉴别出为假的文件,鉴别器努力的试图鉴别出来送检的假货。然后就他们两个不断的对抗,就像炼蛊一样。

项目结构


这次的项目中主要有3个文件。使用的是MNIST数据集

  • config.yam:
    • 用来设置各种类似学习率(learning_rate), Leaky Relu所使用的alpha,迭代次数(epoch)等。我们可以指定训练的图像的标签。比如说可以单独训练标签为‘8’的数据,并生成类似‘8’的数据。方便我们调参。
  • train.py:
    • 放置训练使用的代码与神经网络。这里我是用了tensorboard,tensorboard将会把生成器(Generator)的loss与鉴别器(Discriminator)的loss分别展示到tensorboard中。我们可以在训练的过程中实时观察各个loss的走势。以及我把每次生成器(Generator)生成的图片都保存在了硬盘中,我们也可以实时的观察机器学习的成果。
  • utils.py:
    • 放置组成神经网络,预处理数据等train.py中需要用到的工具。例如data_batch()等。

Utils工具

生成器(Generator)


生成器我用的是全连接神经网络,因为MNIST数据集十分的简单,全连接神经网络的表现已经十分的优秀了。当然卷积也行,看个人喜好。

因为tensorflow中没有Leaky Relu函数,所以需要自己实现。所以tf.layer.dense()中的activation = None我不希望它自动调用了其他激活函数。

最后的激活函数我调用tf.tanh()

我把这段代码中的变量命名为‘generator’,为了方便我日后根据变量名保存变量。从而实现只保存生成器,丢弃鉴别器。

def generator( z, out_dim, n_units = 128, reuse = False, alpha = 0.01 ):with tf.variable_scope( 'generator', reuse = reuse ):    #命名闭包中代码的变量h1 = tf.layers.dense( z, n_units, activation = None )    # 声明全连接神经网络h1 = tf.maximum( alpha * h1, h1 )    # Leaky Relulogits = tf.layers.dense( h1, out_dim, activation = None )out = tf.tanh( logits )return out

鉴别器(Discriminator)


分类器用的激活函数也是Leaky Relu函数。结构跟生成器(Generator)类似,只不过最后的一层的激活函数换成了tf.sigmoid(),而且最一层全连接层的神经元数我只设置了一个,因为我发现tf.sigmoid()激活函数并没有对模型有很大的帮助。

同样的我也为这段代码中的变量命名了。

def discriminator( x, n_units = 128, reuse = False, alpha = 0.01 ):with tf.variable_scope( 'discriminator', reuse = reuse ):h1 = tf.layers.dense( x, n_units, activation = None )    # Leacy ReLUh1 = tf.maximum( alpha * h1, h1 )logits = tf.layers.dense( h1, 1, activation = None )out = tf.sigmoid( logits )return out, logits

tr

这篇关于【Tensorflow tf 掏粪记录】笔记四——tensorflow搭建GAN神经网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/409773

相关文章

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事