卷积神经网络

想实现 DCGAN?从制作一张门票谈起!

妖精的绣舞 提交于 2019-12-05 09:12:25
生成对抗网络因为优雅的创意和优秀的性能吸引了很多研究者与开发者,本文从简洁的案例出发详解解释了 DCGAN,包括生成器的解卷积和判别器的卷积过程。此外,本文还详细说明了 DCGAN 的实现过程,是非常好的实践教程。 热身 假设你附近有个很棒的派对,你真的非常想去。但是,存在一个问题。为了参加聚会,你需要一张特价票——但是,票已经卖完了。 等等!难道这不是关于生成对抗网络(Generative Adversarial Networks)的文章吗?是的,没错。但是请先忍忍吧,这个小故事还是很值得一说的。 好的,由于派对的期望值很高,组织者聘请了一个有资质的安全机构。他们的主要目标是不允许任何人破坏派对。为了做到这一点,场地的入口安排了很多警卫,检查每个人门票的真实性。 你并没有什么武打天赋能硬闯进去。所以,唯一的途径是通过一张非常有说服力的假票瞒天过海。 不过,这个计划存在一个很大的问题——你没见过真票长什么样。 即使根据自己的创造力设计了一张票,你是不可能在第一次尝试时能骗过警卫的。此外,如果没有一张足够真实的派对假票,带着自己做的假票进门无异于自投罗网。 为了解决这个问题,你决定打电话给你的朋友 Bob 帮你点忙。 Bob 的任务非常简单。他将用你做的假票尝试混进派对中去。如果他被拒之门外,他将为你带回有关票面样式的有用提示。 基于这个反馈,你可以再试着做一张新版假票交给 Bob

DCGAN及其tensorflow版源码解读

冷暖自知 提交于 2019-12-05 09:11:53
上一节我们提到 G 和 D 由多层感知机定义 。 深度学习中对图像处理应用最好的模型是 CNN ,那么如何把 CNN 与 GAN 结合? DCGAN 是这方面最好的尝试之一。 源码: https://github.com/Newmu/dcgan_code 。DCGAN论文作者用theano实现的,他还放上了其他人实现的版本,本文主要讨论tensorflow版本。 TensorFlow 版本的源码: https://github.com/carpedm20/DCGAN-tensorflow DCGAN把上述的G和D换成了两个卷积神经网络(CNN)。但不是直接换就可以了,DCGAN对卷积神经网络的结构做了一些改变,以提高样本的质量和收敛的速度,这些改变有: 取消所有pooling层。G网络中使用转置卷积(transposed convolutional layer)进行上采样,D网络中用加入strided的卷积代替pooling。 在D和G中均使用batch normalization 去掉FC层,使网络变为全卷积网络 G网络中使用ReLU作为激活函数,最后一层使用tanh D网络中使用LeakyReLU作为激活函数 这些改变在代码中都可以看到。DCGAN论文中提到对CNN结构有三点重要的改变: (1) Allconvolutional net (Springenberg et al.

30分钟手把手带你入门TensorFlow——Mnist手写数字识别实战教程

自作多情 提交于 2019-12-05 09:05:15
Hello大家好,这一次睿老师将会带领大家实现mnist的手写数字识别,手把手教会你如何使用TensorFlow进行基本的操作。本次课程中,我会保持一贯的啰嗦风格,事无巨细地深入讲解每一个操作细节,为每一位读者提供最贴心的服务。 准备工作 安装TensorFlow我就不多说了,主要是mnist数据集的获取一般都会有些问题。你可能会遇到input_data.py文件下载不下来,又或是下载input_data.py之后运行会报错,又或是使用tensorflow.examples.tutorials.mnist 里自带的input_data.py报错。 解决方法如下: 1、Input_data.py文件需要修改一下下才能正常使用,在37行的“return numpy.frombuffer(bytestream.read(4), dtype=dt)”:末尾处添加“[0]”,变成“return numpy.frombuffer(bytestream.read(4), dtype=dt)[0]” 2、由于网络问题或其他一些未知原因,input_data下载、解压mnist数据集时会报错,这时你只要自己手动下载好数据集(四个压缩包)放到工作空间的MNIST_data文件夹里就行,就能绕开报错问题。 流程讲解 大致流程分为三步: 1、构建CNN网络结构; 2、构建loss function

对抗网络DCGAN 生成图片的应用

社会主义新天地 提交于 2019-12-05 08:57:43
DCGAN原理介绍 我们知道深度学习中对图像处理应用最好的模型是CNN,那么如何把CNN与GAN结合?DCGAN是这方面最好的尝试之一(论文地址: [1511.06434] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks ) DCGAN的原理和GAN是一样的,这里就不在赘述。它只是把上述的G和D换成了两个卷积神经网络(CNN)。但不是直接换就可以了,DCGAN对卷积神经网络的结构做了一些改变,以提高样本的质量和收敛的速度,这些改变有: 取消所有pooling层。G网络中使用转置卷积(transposed convolutional layer)进行上采样,D网络中用加入stride的卷积代替pooling。 在D和G中均使用batch normalization 去掉FC层,使网络变为全卷积网络 G网络中使用ReLU作为激活函数,最后一层使用tanh D网络中使用LeakyReLU作为激活函数 DCGAN中的G网络示意: DCGAN在Tensorflow中已经有人造好了轮子: https://github.com/carpedm20/DCGAN-tensorflow ,我们直接使用这个代码就可以了。 如果要训练mnist 执行python

【TensorFlow】对抗生成网络(DCGAN)- 根据MNIST数据集模拟生成数字手写体实战

若如初见. 提交于 2019-12-05 08:57:22
《 文章 》介绍了使用全连接构建对抗生成神经网络GAN,本文介绍基于卷积构建对抗生成神经网络DCGAN(深度卷积对抗生成网络,Deep Convolutional Generative Adversarial Networks)。 DCGAN的特点 判别模型:使用带步长的卷积(strided convolutions)取代了的空间池化(spatial pooling),容许网络学习自己的空间下采样(spatial downsampling) 生成模型:使用微步幅卷积(fractional strided),容许它学习自己的空间上采样(spatial upsampling) 激活函数:LeakyRELU Batch Normalization 批标准化:解决因糟糕的初始化引起的训练问题,使得梯度能传播更深层次。Batch Normalization证明了生成模型初始化的重要性,避免生成模型崩溃:生成的所有样本都在一个点上(样本相同),这是训练GANs经常遇到的失败现象。 生成器: 判别器: 反卷积: 就是把卷积的前向和反向传播完全颠倒了 实现 import tensorflow as tf import numpy as np import pickle # 把结果保存至本地 import matplotlib.pyplot as plt %matplotlib inline #

keras学习之-mnist_cnn.py

戏子无情 提交于 2019-12-05 08:49:43
keras的初窥,发现keras真是一个极好的api,封装了好多繁琐的东东,使用起来简洁方便。 注:该例子相对比较简单,两个卷积层作为隐藏层,一个全连接层作为输出层 # -*- coding: utf-8 -*- """ Created on 2018/3/13 18:15 @author: lhua """ #先翻译下开头: # 用MNIST手写数字识别数据训练了一个简单的CNN模型。在迭代12次之后得到了99.25%的准确率 # (参数还有调整的余地)在Grid K520的GPU上跑一轮需要12秒 '''Trains a simple convnet on the MNIST dataset. Gets to 99.25% test accuracy after 12 epochs (there is still a lot of margin for parameter tuning). 16 seconds per epoch on a GRID K520 GPU. ''' #Python提供了__future__模块,把下一个新版本的特性导入到当前版本, # 于是我们就可以在当前版本中测试一些新版本的特性。详见廖雪官网 from __future__ import print_function #引入需要的包:数据集,序贯(Sequential),全连接层(Dense)

【深度学习】 Keras 实现Minst数据集上经典网络结构(DeepDense、LeNet、AlexNet、ZFNet)分类

 ̄綄美尐妖づ 提交于 2019-12-05 08:47:34
实验简介   本次实验一方面是熟悉Keras 序列式(Sequential)模型的使用,另一方面是复现早期的经典网络结构来学习神经网络搭建的技巧。数据集采用的是熟知的Minst手写识别,框架采用的是tensorflow、Keras,数据集和框架的导入和安装请点击 这里 。经典的网络结构已有大量博客进行理论分析,这里只给出代码仅供参考,关于神经网络结构的发展,推荐大家看 这篇文章 。 DeepDense   这个是自己定义的名字,也就是深度全连接网络。 # -*- coding: utf-8 -*- """ Created on Thu Jun 13 11:19:33 2019 @author: YLC """ from keras . datasets import mnist from keras . models import Sequential from keras . layers . core import Dense , Activation , Dropout from keras . utils import np_utils #数据集导入模块 ( X_train , y_train ) , ( X_test , y_test ) = mnist . load_data ( ) ; #参数定义模块 img_rows , img_cols = 28 , 28 #

生成对抗网络之DCGAN

[亡魂溺海] 提交于 2019-12-05 08:36:15
DCGAN原理介绍 我们知道深度学习中对图像处理应用最好的模型是CNN,那么如何把CNN与GAN结合?DCGAN是这方面最好的尝试之一(论文地址:[1511.06434] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks) 卷积神经网络在有监督学习中的各项任务上都有很好的表现,但在无监督学习领域,却比较少。本文介绍的算法将有监督学习中的CNN和无监督学习中的GAN结合到了一起。 DCGAN的原理和 GAN 是一样的,这里就不在赘述(GAN网络提出了理论,具体的G,D实现可以我们自己来定)。DCGAN把上述的G和D换成了两个卷积神经网络 。D可以理解为一个分类的卷积网络。G则是一个全卷积网络。但不是直接换就可以了,DCGAN对卷积神经网络的结构做了一些改变,以提高样本的质量和收敛的速度,这些改变有: G网络中使用转置卷积(transposed convolutional layer)进行上采样,D网络中用 strided convolutions来替代空间池化(pooling) 。 除了生成器模型的输出层和判别器模型的输入层,在网络其它层上都使用了Batch Normalization,使用BN可以稳定学习,有助于处理初始化不良导致的训练问题。

从头开始GAN【论文】(二) —— DCGAN

限于喜欢 提交于 2019-12-05 08:30:45
上一篇介绍了GAN 的基本原理以及相关的概念和知识点,同时也反映出GAN 的一些缺点,比如说训练不稳定,生成过程不可控,不具备可解释性等。这一篇就来看看GAN 的改进版之一,DCGAN(Deep Convolutional GAN)。 1. 网络结构 DCGAN 的判别器和生成器都使用了卷积神经网络(CNN)来替代GAN 中的多层感知机,同时为了使整个网络可微,拿掉了CNN 中的池化层,另外将全连接层以全局池化层替代以减轻计算量。 2. 去卷积(反卷积,Deconvolution) 从上图中可以看到,生成器G 将一个100 维的噪音向量扩展成64 * 64 * 3 的矩阵输出,整个过程采用的是微步卷积的方式。作者在文中将其称为fractionally-strided convolutions,并特意强调不是deconvolutions。关于上采样和去卷积等概念,我特意找了一些资料来看看他们的区别是什么,相关内容整理在下面。 上采样和去卷积是同一个概念,它的目的是将经过池化层以后缩小的矩阵扩大到一定的大小,比如说从3 * 3 扩大到5 * 5,如下图所示: 而去卷积(链接: 反卷积 )又包含转置卷积和微步卷积,两者的区别在于padding 的方式不同,看看下面这张图片就可以明白了: 另外还有一个概念叫空洞卷积(Dilated Convolution)。在pixel-wise

【GANs学习笔记】(十一)DCGAN、ImprovedDCGAN

余生颓废 提交于 2019-12-05 08:30:27
完整笔记: http://www.gwylab.com/note-gans.html ——————————————————————— 本章借鉴内容: http://blog.sina.com.cn/s/blog_76d02ce90102xq4d.html Part2 GANs 基于 Network 的改进 在这一部分我们开始探讨 generator 与 discriminator 内部网络的结构,之前我们一直在探讨二者在外部的连接方式和如何使用 divergence 能让结果更好,而涉及到 generator 与 discriminator 本身时一直粗略地描述成神经网络,但其实,使用不同的神经网络的结构对结果会产生不同的影响。本章我们首先介绍基于卷积网络改进的 DCGAN 与 ImprovedDCGAN ,然后介绍消除感受野障碍的 SAGAN ,最后会介绍迄今为止规模最大、效果最好的 BigGAN 。 1. DCGAN 我们知道深度学习中对图像处理应用最好的模型是 CNN ,那么如何把 CNN 与 GAN 结合? DCGAN 是这方面最好的尝试之一。 DCGAN 的原理和 GAN 是一样的,这里就不在赘述。它只是把上述的 G 和 D 换成了两个卷积神经网络( CNN )。但不是直接换就可以了, DCGAN 对卷积神经网络的结构做了一些改变,以提高样本的质量和收敛的速度,这些改变有