#21天学习挑战赛—深度学习实战100例#——生成手写字体

本文是365天深度学习训练营的学习记录,重点介绍如何使用GAN网络生成手写数字。内容包括对抗神经网络的概念,生成器和鉴别器的工作原理,以及模型的训练和评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


活动地址:优快云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'),
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值