《GANs实战》学习笔记(四)第四章 深度卷积生成对抗网络(DCGAN)

本文介绍深度卷积生成对抗网络(DCGAN)的原理及其实现,包括批归一化的重要性、卷积神经网络的基础知识,以及如何用Keras构建并训练DCGAN生成MNIST手写数字。

GAN(生成对抗网络)出版了一本实战书,了解下?

第四章 深度卷积生成对抗网络(DCGAN)

生成器和鉴别器都使用卷积神经网络,这种GAN架构称为深度卷积生成对抗网络(DCGAN)

DCGAN复杂架构在实践中变为可行的关键性突破之一:批归一化(Batch Normalization)

一、卷积神经网络

1、卷积滤波器

卷积是通过在输入层上滑动一个或多个滤波器(filter)来执行的。每个滤波器都有一个相对较小的感受野(宽乘高),但它贯穿输入图像的全部深度。

2、参数共享

滤波器参数被其所有输入值共享,这具有直观和实用的优点。直观地讲,参数共享能够有效地学习视觉特征和形状(如线条和边缘),无论它们在输入图像中位于何处。(位置无关性。)

二、批归一化

就像对网络输入进行归一化一样,每个小批量训练数据通过网络时,对每个层的输入进行归一化。

1、理解归一化

归一化(Normalization)是数据的缩放,使它具有零均值单位方差。这是通过取每个数据点x减去平均值\mu,然后除以标准偏差得到的。

\hat{x}=\frac{x-\mu }{\sigma }

归一化有几个优点:最重要的一点或许是:使得具有巨大尺度差异的特征之间的比较变得更容易。从而使训练过程对特征的尺度不那么敏感。

归一化通过将每个特征值缩放到一个标准化的尺度上解决了这个问题,这样一来每个数据点都不表示为其实际值,而是以一个相对的“分数”表示给定数据点与平均值的标准偏差。

在处理具有多层的深度神经网络时,仅规范化输入可能还远远不够。当输入值经过一层又一层网络时,他们将被每一层中的可训练参数进行缩放。当参数通过反向传播得到调整时,每一层输入的分布在随后的训练中都容易发生变化,从而影响学习过程的稳定性。在学术界,这个问题称为:协变量偏移(covariate shift)。批归一化通过按每个小批量的均值和方差缩放每个小批量中的值来解决该问题。

2、计算批归一化

批归一化的计算方式与之前介绍的简单归一化方程在几个方面有所不同。

\mu _{B}为小批量B的平均值,\sigma _{B}^{2}为小批量B的方差(均方误差)。归一化值\hat{x}的计算公式

\hat{x} = \frac{x-\mu _{B}}{\sqrt{\sigma ^{2}+\varepsilon }}

增加\varepsilon项是为了保持数值稳定性,主要是为了避免被零除,一般设置为一较小的正常数。例如0.001。

同时,在批归一化中,不直接使用这些归一化值,而是将它们乘以\gamma并加上\beta后,再作为输入传递到下一层。

重要的是:\gamma\beta是可训练的参数,就像权重和偏置一样在网络训练期间进行调整。这样做有助于将中间的输入值标准化使其均值在0附近(但非0)。方差也不是1。\gamma\beta是可训练的,因此网络可以学习哪些值最有效。

Keras中的函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值