三层反向传播算法及其在“手写体数字”识别中的应用

一.算法描述
反向传播算法(BP):神经网络有监督学习过程中的一种常用算法,目的是利用训练样本的期望和输出值来调节神经网路的参数。学习过程分为两个阶段:
正向传播阶段:输入信号经过神经网络各层处理并计算出每个神经节点的输出值;
反向传播阶段:采用梯度下降法不断调整整个网络的权值和阈值,使得网络期望值和输出值之间的误差平方和达到最小。

二. 算法设计
1.数据介绍:
MNIST的下载链接:http://yann.lecun.com/exdb/mnist/。
MNIST是一个包含数字0~9的手写体图片数据集,图片已归一化为以手写数 字为中心的28*28规格的图片。
MNIST由训练集与测试集两个部分组成,各部分 规模如下:
训练集:60,000个手写体图片及对应标签
测试集:10,000个手写体图片及对应标签
2.神经网络构建:
a) Generator
生成网络的输入是一个带标签的随机数,具体操作方式是生成一个N维的正态分布随机数,再利用Embedding层将正整数(索引值)转换为N维的稠密向量,并将这个稠密向量与N维的正态分布随机数相乘。输入的数进行reshape后利用上采样与卷积生成图像。
b)Discriminator
普通GAN的判别模型的目的是根据输入的图片判断出真伪。
在ACGAN中,其不仅要判断出真伪,还要判断出种类,主干网络利用卷积构成。 因此它的输入一个28,28,1维的图片,输出有两个:
一个是0到1之间的数,1代表判断这个图片是真的,0代表判断这个图片是假的。与普通GAN不同的是,它使用的是卷积神经网络。
另一个是一个向量,用于判断这张图片属于什么类。
3.训练思路:
ACGAN的训练思路分为如下几个步骤:
1、随机选取batch_size个真实的图片和它的标签。
2、随机生成batch_size个N维向量和其对应的标签label,利用Embedding层进行组合,传入到Generator中生成batch_size个虚假图片。
3、Discriminator的loss函数由两部分组成,一部分是真伪的判断结果与真实情况的对比,一部分是图片所属标签的判断结果与真实情况的对比。
4、Generator的loss函数也由两部分组成,一部分是生成的图片是否被Discriminator判断为1,另一部分是生成的图片是否被分成了正确的类。

三. 算法实现
1.算法的编程实现:
from future import print_function, division
import tensorflow as tf
from keras.datasets import mnist
from keras.backend.tensorflow_backend import set_session
from keras.layers import Input, Dense, Reshape, Flatten, Dropout, multiply
from keras.layers import BatchNormalization, Activation, Embedding, ZeroPadding2D, GlobalAveragePoolin

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值