mnist

GAN实现(TensorFlow,MNIST数据集)

╄→尐↘猪︶ㄣ 提交于 2019-12-05 10:52:32
Generative Adversarial Nets in TensorFlow 生成对抗网络(简称GAN)是一种非常流行的神经网络。它由Ian Goodfellow等人在2014年NIPS论文中首次引入。这篇论文引发了对神经网络对抗训练的研究热潮。突然之间,GAN的许多改进都出现了:DCGAN,Sequence-GAN,LSTM-GAN等等。在2016年NIPS会议上,甚至有一整个专门针对GAN的研讨会! 请注意,该代码可在 https://github.com/wiseodd/generative-models 中找到。 首先,让我们回顾一下这篇论文的要点。之后,我们将一如既往地尝试使用TensorFlow和MNIST数据来实现GAN。 Generative Adversarial Nets 让我们举一个“造假币的罪犯”和“警察”之间的玫瑰关系的例子。在假币方面,罪犯的目标是什么?警察的目标是什么?我们列举一下: 为了成为一个成功的伪造犯,罪犯想欺骗警察,这样警察就不能分辨出假币与真钱的区别 为了成为正义的典范,警察希望尽可能地发现假币 在那里,我们看到产生了冲突。博弈论中的这种情况可以模拟为一个极小化极大游戏(minimax game)。这个过程被称为对抗过程。 生成对抗网(GAN)是对抗过程的一个特例,其组成部分(警察和罪犯)是神经网络。第一个网络生成数据

用各种GAN生成MNIST数字

北战南征 提交于 2019-12-05 10:45:52
用各种GAN生成MNIST数字 完整代码 : https://github.com/SongDark/GAN_collections 数据获取 MNIST数据集的获取可以参考这篇博客: https://blog.csdn.net/songbinxu/article/details/82992264 需要注意的是MNIST数据的值域范围,有的源是原本的 [ 0 , 255 ] [0,255] [ 0 , 2 5 5 ] ,有的归一化到了 [ 0 , 1 ] [0,1] [ 0 , 1 ] 。 生成器和判别器 实现了CNN和MLP两种版本。CNN结构参考自 这里 ,MLP结构参考自 这里 。 有关 Spectral Norm 在 dense 层、 conv2d 层和 deconv2d 层中都实现了 Spectral Normalization ,可以自由选择或取消。 Spectral Normalization 是用来限制判别器D的,不应该加到生成器G中。 有关 Gradient Clipping 所谓 Gradient Clipping(GC) 就是将参数限制在某个范围内,比如 ( − 0.01 , 0.01 ) (-0.01,0.01) ( − 0 . 0 1 , 0 . 0 1 ) ,它也是用来限制判别器D的,不应该加到生成器G中。WGAN的原始版本必须加GC

tensorflow学习(7. GAN实现MNIST分类)

走远了吗. 提交于 2019-12-05 10:45:32
https://blog.csdn.net/CoderPai/article/details/70598403?utm_source=blogxgwz0 里面有比较全面的GAN的链接 原始论文链接: http://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf 一篇不错的理解GAN的文章: https://blog.csdn.net/qq_31531635/article/details/70670271 这篇GAN代码的出处 https://wiseodd.github.io/techblog/2016/09/17/gan-tensorflow/ 简单用了别人的代码,实现了一下,加入了自己理解的部分: import tensorflow as tf import numpy as np import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec import os from tensorflow.examples.tutorials.mnist import input_data sess = tf.InteractiveSession() mb_size = 128 Z_dim = 100 mnist = input_data

GAN论文阅读——原始GAN(Tensorflow实现)

梦想与她 提交于 2019-12-05 10:44:30
参考资料: https://github.com/jiqizhixin/ML-Tutorial-Experiment/blob/master/Experiments/tf_GAN.ipynb 我们的实验主要基于mnist数据集用Tensorflow实现GAN模型。 首先我们import所有要用的包: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import numpy as np import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec import os 定义几个会用到的函数: #该函数将给出权重初始化的方法 def variable_init (size) : in_dim = size[ 0 ] #计算随机生成变量所服从的正态分布标准差 w_stddev = 1. / tf.sqrt(in_dim / 2. ) return tf.random_normal(shape=size, stddev=w_stddev) #定义一个可以生成m*n阶随机矩阵的函数,该矩阵的元素服从均匀分布,随机生成的z就为生成器的输入 def sample_Z (m, n) : return np

原始GAN网络Tensorflow实现MNIST图片生成(附详细注释)

折月煮酒 提交于 2019-12-05 10:43:38
原始GAN网络论文(非常经典)介绍: https://arxiv.org/pdf/1406.2661.pdf 数据集采用的是黑白图像数据集MNIST。话不多说,直接上代码: 1. 导入必要的库 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import numpy as np import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec #可视化库 import os 2. 权重初始化函数 # 权重初始化函数方法 def variable_init(size): in_dim = size[0] # 计算随机生成变量所服从的正态分布标准差 w_stddev = 1. / tf.sqrt(in_dim / 2.0) return tf.random_normal(shape=size, stddev=w_stddev) #从服从指定正太分布的数值中取出指定个数的值 3. 变量定义 # 定义输入矩阵的占位符,输入层单元为784,None批量大小的占位,X代表输入的真实图片。占位符的数值类型为32位浮点型 X = tf.placeholder(tf.float32, shape=[None,

WGAN-GP代码注释

二次信任 提交于 2019-12-05 10:42:33
今天看到paperweekly上有人分享了一个 WGAN-GP 的实现,是以MNIST为数据集,代码简洁,结构清晰。我最近也在看GAN的相关内容,就下载下来做个参考。 代码地址: https://github.com/bojone/gan/ 对于这个基于tensorflow实现的代码,我对其进行了简单的注释。 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import os import numpy as np from scipy import misc,ndimage #读入本地的MNIST数据集,该函数为mnist专用 mnist = input_data.read_data_sets( './MNIST_data' , one_hot= True ) batch_size = 100 #每个batch的大小 width,height = 28 , 28 #每张图片包含28*28个像素点 mnist_dim = width*height #用一个数字数组表示一张图,那么这个数组展开成向量的长度就是28*28=784 random_dim = 10 #每张图表示一个数字,从0到9 epochs = 1000000 #共100万轮 def my_init

初识GAN之MNIST手写数字的识别

南笙酒味 提交于 2019-12-05 10:38:54
初识GAN,因为刚好在尝试用纯python实现手写数字的识别,所以在这里也尝试了一下。笔者也是根据网上教程一步步来的,不多说了,代码如下: from tensorflow . examples . tutorials . mnist import input_data import tensorflow as tf mnist = input_data . read_data_sets ( 'MNIST_data' , one_hot = True ) #下载文件在MNIST_data文件夹中 sess = tf . InteractiveSession ( ) def conv2d ( x , w ) : return tf . nn . conv2d ( x , w , strides = [ 1 , 1 , 1 , 1 ] , padding = 'SAME' ) def max_pool_2x2 ( x ) : return tf . nn . max_pool ( x , ksize = [ 1 , 2 , 2 , 1 ] , strides = [ 1 , 2 , 2 , 1 ] , padding = 'SAME' ) x = tf . placeholder ( tf . float32 , [ None , 784 ] ) y_ = tf .

如何用 TensorFlow 实现生成式对抗网络(GAN)

核能气质少年 提交于 2019-12-05 10:30:22
我们来研究一下生成式对抗网络 GAN,并且用 TensorFlow 代码实现。 自从 Ian Goodfellow 在 14 年发表了 论文 Generative Adversarial Nets 以来,生成式对抗网络 GAN 广受关注,加上学界大牛 Yann Lecun 在 Quora 答题时曾说,他最激动的深度学习进展是生成式对抗网络,使得 GAN 成为近年来在机器学习领域的新宠,可以说,研究机器学习的人,不懂 GAN,简直都不好意思出门。 下面我们来简单介绍一下生成式对抗网络,主要介绍三篇论文:1)Generative Adversarial Networks;2)Conditional Generative Adversarial Nets;3)Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks。 首先来看下第一篇论文,了解一下 GAN 的过程和原理: GAN 启发自博弈论中的二人零和博弈(two-player game),GAN 模型中的两位博弈方分别由生成式模型(generative model)和判别式模型(discriminative model)充当。生成模型 G 捕捉样本数据的分布,用服从某一分布(均匀分布,高斯分布等)的噪声 z

Kaggle-MNIST之路

穿精又带淫゛_ 提交于 2019-12-05 10:25:40
前言 大概半个多月前吧,开始玩Kaggle,主要是为了熟悉神经网络。 因为主要目的是为了熟悉神经网络,所以我是从最简单的神经网络开始搭建起的,逐步的添加一些东西来完善使得整个模型逐渐完善。 这篇文章类似于一个目录吧 所有的程序,模型,都是我Windows下 CPU环境下实现的,没有用到GPU 最好的成绩 分数:0.99128 排名:900+ 不过好像现在掉下来到了1000 anyway,因为如果不适用测试集合的话最优是达到0.996。 所以,就不接着在这个上接着深挖了。 目录 【Kaggle-MNIST之路】两层的神经网络Pytorch(四行代码的模型) 【Kaggle-MNIST之路】两层的神经网络Pytorch(改进版)(二) 【Kaggle-MNIST之路】CNN+改进过的损失函数(三) 【Kaggle-MNIST之路】CNN+改进过的损失函数+多次的epoch(四) 【Kaggle-MNIST之路】CNN结构改进+改进过的损失函数(五) 【Kaggle-MNIST之路】CNN结构再改进+交叉熵损失函数(六) 【Kaggle-MNIST之路】自定义程序结构(七) 【Kaggle-MNIST之路】CNN再添加一个层卷积(八) 来源: CSDN 作者: 肥宅_Sean 链接: https://blog.csdn.net/a19990412/article/details

基于PyTorch读入MNIST数据集代码与解析(非手动下载)

我的梦境 提交于 2019-12-05 10:25:02
手动下载方法 相关文档: torch torchvision:包含了目前流行的数据集,模型结构和常用的图片转换工具。 torchvision.datasets torchvision.transforms torch.utils.data from torchvision import datasets , transforms from torch . utils . data import DataLoader #定义超参数 batch_size = 64 #数据预处理 data_tf = transforms . Compose ( [ transforms . ToTensor ( ) , transforms . Normalize ( [ 0.5 , 0.5 , 0.5 ] , [ 0.5 , 0.5 , 0.5 ] ) ] ) class torchvision.transforms.Compose(transforms) 将多个transform组合起来使用 class torchvision.transforms.ToTensor 把一个取值范围是[0,255]的PIL.Image或者shape为(H,W,C)的numpy.ndarray, 转换成形状为[C,H,W],取值范围是[0,1.0]的torch.FloadTensor class torchvision