活动地址:优快云21天学习挑战赛
本文为🔗365天深度学习训练营 中的学习记录博客
前言
终于到第三周啦,其实还有点不舍,毕竟能看到不少深度学习的例子。本周的任务有3个,生成手写字体,动物识别,乳腺癌识别。因为任务不同,那么可能会使用到不同的预处理、网络等等。
本节主要学习生成手写字体。
一、拆解任务
首先需要了解这次需要处理的任务,这里贴生成的手写数字展示图。
从上图来看生成的手写数字和真实的手写数字差距不是太大,几乎能做到“以假乱真”了。
二、学习内容
这次的任务跟之前做过的识别衣服、识别手写数字不大一样,本章使用到了一个新的网络——GAN网络。
1. 什么是对抗神经网络
对抗神经网络包含两个部分:
生成器:生成“假”数据以骗过鉴别器
鉴别器:判断图片是“真的”还是“生成”的,并从中挑出“生成的”数据。
2. 构建对抗神经网络
GAN网络的运行过程如上图所示:
(1)随机数(Random noise)经过Generator 生成了一个Fake image
(2)将生成的fake image 和 training set 的图片一起输入到discriminator中
(3)discriminator对输入的图片进行概率判断,然后得到图片的类别
# 生成器
def build_generator():
# ======================================= #
# 生成器,输入一串随机数字生成图片
# ======================================= #
model = Sequential([
layers.Dense(256, input_dim=latent_dim),
layers.LeakyReLU(alpha=0.2), # 高级一点的激活函数
layers.BatchNormalization(momentum=0.8), # BN 归一化
layers.Dense(512),
layers.LeakyReLU(alpha=0.2),
layers.BatchNormalization(momentum=0.8),
layers.Dense(1024),
layers.LeakyReLU(alpha=0.2),
layers.BatchNormalization(momentum=0.8),
layers.Dense(np.prod(img_shape), activation='tanh'),