Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建
Mindspore框架DCGAN模型实现漫画头像生成
- Mindspore框架DCGAN模型实现漫画头像生成|(一)漫画头像数据集准备
- Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建
- Mindspore框架DCGAN模型实现漫画头像生成|(三)DCGAN模型训练和推理
- Mindspore框架DCGAN模型实现漫画头像生成|(四)应用程序生成实践
Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建
DCGAN,全称是 Deep Convolution Generative Adversarial Networks,深度卷积生成对抗网络
。
1. DCGAN模型特点
- make GAN + CNN more stable and deeper,能够产生更高分辨率的图像;
- 全卷积网络(all convolutional net):用步幅卷积(strided convolutions)替代确定性空间池化函数(deterministic spatial pooling functions)(比如最大池化),让网络自己学习downsampling方式。作者对 generator 和 discriminator 都采用了这种方法。
- 取消全连接层:使用 全局平均池化(global average pooling)替代 fully connected layer。global average pooling会降低收敛速度,但是可以提高模型的稳定性。GAN的输入采用均匀分布初始化,可能会使用全连接层(矩阵相乘),然后得到的结果可以reshape成一个4 dimension的tensor,然后后面堆叠卷积层即可;对于鉴别器,最后的卷积层可以先flatten,然后送入一个sigmoid分类器。
- 批归一化(Batch Normalization):BN 被证明是深度学习中非常重要的 加速收敛 和 减缓过拟合 的手段。这样有助于解决 poor initialization 问题并帮助梯度流向更深的网络。防止G把所有rand input都折叠到一个点,同时防止样本震荡和模型的不稳定,只对生成器(G)的输出层和鉴别器(D)的输入层使用BN。
- Leaky Relu 激活函数: 生成器(G),输出层使用tanh 激活函数,其余层使用relu 激活函数。鉴别器(D),都采用leaky rectified activation。
- DCGAN生成器G的结构如下:
2. 构造网络:生成器G
生成器G的功能是将隐向量z映射到数据空间。由于数据是图像,这一过程也会创建与真实图像大小相同的 RGB 图像。
import mindspore as ms
from mindspore import nn, ops
from mindspore.common.initializer import Normalweight_init = Normal(mean=0, sigma=0.02)
gamma_init = Normal(mean=1, sigma=0.02)# 通过输入部分中设置的nz、ngf和nc来影响代码中的生成器结构。
class Generator(nn.Cell):"""DCGAN网络生成器"""def __init__(self):super(Generator, self).__init__()self.generator = nn.SequentialCell(nn.Conv2dTranspose(nz, ngf * 8, 4, 1, 'valid', weight_init=weight_init),nn.BatchNorm2d(ngf * 8, gamma_init=gamma_init),nn.ReLU(),nn.Conv2dTranspose(ngf * 8, ngf * 4, 4, 2, 'pad', 1, weight_init=weight_init),nn.BatchNorm2d(ngf * 4, gamma_init=gamma_init),nn.ReLU(),nn.Conv2dTranspose(ngf * 4, ngf * 2, 4, 2, 'pad', 1, weight_init=weight_init),nn.BatchNorm2d(ngf * 2, gamma_init=gamma_init),nn.ReLU(),nn.Conv2dTranspose(ngf * 2, ngf, 4, 2, 'pad', 1, weight_init=weight_init),nn.BatchNorm2d(ngf, gamma_init=gamma_init),nn.ReLU(),nn.Conv2dTranspose(ngf, nc, 4, 2, 'pad', 1, weight_init=weight_init),nn.Tanh())def construct(self, x):return self.generator(x)generator = Generator()
注意:nz是隐向量z的长度,ngf与通过生成器传播的特征图的大小有关,nc是输出图像中的通道数
。
2. 构造网络:判别器D
判别器D是一个二分类网络模型,输出判定该图像为真实图的概率。形如:
通过一系列的Conv2d、BatchNorm2d和LeakyReLU层对其进行处理,最后通过Sigmoid激活函数得到最终概率。
class Discriminator(nn.Cell):"""DCGAN网络判别器"""def __init__(self):super(Discriminator, self).__init__()self.discriminator = nn.SequentialCell(nn.Conv2d(nc, ndf, 4, 2, 'pad', 1, weight_init=weight_init),nn.LeakyReLU(0.2),nn.Conv2d(ndf, ndf * 2, 4, 2, 'pad', 1, weight_init=weight_init),nn.BatchNorm2d(ngf * 2, gamma_init=gamma_init),nn.LeakyReLU(0.2),nn.Conv2d(ndf * 2, ndf * 4, 4, 2, 'pad', 1, weight_init=weight_init),nn.BatchNorm2d(ngf * 4, gamma_init=gamma_init),nn.LeakyReLU(0.2),nn.Conv2d(ndf * 4, ndf * 8, 4, 2, 'pad', 1, weight_init=weight_init),nn.BatchNorm2d(ngf * 8, gamma_init=gamma_init),nn.LeakyReLU(0.2),nn.Conv2d(ndf * 8, 1, 4, 1, 'valid', weight_init=weight_init),)self.adv_layer = nn.Sigmoid()def construct(self, x):out = self.discriminator(x)out = out.reshape(out.shape[0], -1)return self.adv_layer(out)discriminator = Discriminator()
模型结构输出:
相关文章:

Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建
Mindspore框架DCGAN模型实现漫画头像生成 Mindspore框架DCGAN模型实现漫画头像生成|(一)漫画头像数据集准备Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建Mindspore框架DCGAN模型实现漫画头像生成|(三&a…...
mongo-csharp-driver:MongoDB官方的C#客户端驱动程序!
MongoDB一个开源、高性能、无模式的文档型数据库,在日常项目开发中,运用也是非常广泛。 MongoDB官方也针对各门编程语言,都推出相应的客户端驱动程序,下面一起了解下C#版本。 01 项目简介 mongo-csharp-driver是 MongoDB官方C#…...

网络流量分析>>pcapng文件快速分析有用价值解析
引言 在网络安全和流量管理中,解析网络协议数据包是了解网络行为和检测潜在威胁的关键步骤。本文介绍了如何使用Python解析和分析TCP、UDP和ICMP协议的数据包,并统计端口的访问次数。本文的示例代码展示了如何处理不同协议的数据包,提取关键…...

【大模型系列篇】Vanna-ai基于检索增强(RAG)的sql生成框架
简介 Vanna是基于检索增强(RAG)的sql生成框架 Vanna 使用一种称为 LLM(大型语言模型)的生成式人工智能。简而言之,这些模型是在大量数据(包括一堆在线可用的 SQL 查询)上进行训练的,并通过预测响应提示中最…...

【Nacos安装】
这里写目录标题 Nacos安装jar包启动Docker单体Docker集群 Nacos相关配置日志配置数据库配置 Nacos安装 jar包启动 下载jar包 在官方github,根据需求选择相应的版本下载。 解压 tar -zxvf nacos-server-2.4.0.1.tar.gz或者解压到指定目录 tar -zxvf nacos-serv…...
js、ts、argular、nodejs学习心得
工作中需要前端argular开发桌面程序,后端用nodejs开发服务器,商用软件架构...
【Unity】RPG2D龙城纷争(十八)平衡模拟器
更新日期:2024年7月31日。 项目源码:第五章发布(正式开始游戏逻辑的章节) 索引 简介一、BalanceSimulator 类二、RoleAgent 角色代理类三、绘制代理角色四、模拟攻击简介 平衡模拟器用于实时模拟测试角色属性以及要诀属性的数值,以寻找数值设计的平衡性。 介于运行正式游…...
java.lang.IllegalStateException: Duplicate key InventoryDetailDO
以下总结自以下链接 Java8 Duplicate key 异常解决-CSDN博客 原因:由于我们使用了jdk8的新特性中的stream流,将list转换为map集合,但是原来的list集合中存在重复的值,我们不知道如何进行取舍,所以报错 解决方式&…...
Python使用selenium访问网页完成登录——装饰器重试机制汇总
文章目录 示例一:常见装饰器编写重试机制示例二:使用类实现装饰器示例三:使用函数装饰器并返回闭包示例四:使用 wrapt 模块 示例一:常见装饰器编写重试机制 示例代码 import time import traceback import logging from typing import Call…...

“微软蓝屏”事件引发的深度思考:网络安全与系统稳定性的挑战与应对
“微软蓝屏”事件暴露了网络安全哪些问题? 近日,一次由微软视窗系统软件更新引发的全球性“微软蓝屏”事件,不仅成为科技领域的热点新闻,更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件,源于美国电脑安全…...

2024.07纪念一 debezium : spring-boot结合debezium
使用前提: 一、mysql开启了logibin 在mysql的安装路径下的my.ini中 【mysqlid】下 添加 log-binmysql-bin # 开启 binlog binlog-formatROW # 选择 ROW 模式 server_id1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复 参考gitee的项目…...
mysql怎么查询json里面的字段
mysql怎么查询json里面的字段: 要在 MySQL 数据库中查询 JSON 字段中的 city 值,你可以使用 MySQL 提供的 JSON 函数。假设表名是 your_table,包含一个名为 json_column 的 JSON 字段。 以下是一个查询示例,展示如何从 json_colu…...

C++ 右值 左值引用
一.什么是左值引用 右值引用 1.左值引用 左值是一个表示数据的表达式(如变量名或解引用的指针),我们可以获取它的地址可以对它赋值。定义时const修饰符后的左值,不能给他赋值,但是可以取它的地址。左值引用就是给左值的引用,给左…...

「JavaEE」Spring IoC 1:Bean 的存储
🎇个人主页 🎇所属专栏:Spring 🎇欢迎点赞收藏加关注哦! IoC 简介 IoC 全称 Inversion of Control,即控制反转 控制反转是指控制权反转:获得依赖对象的过程被反转了 传统开发模式中&…...
springBoot快速搭建WebSocket
添加依赖 在pom.xml中加入WebSocket相关依赖: <dependencies><!-- websocket --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>…...
掌控授权的艺术:Laravel自定义策略模式深度解析
掌控授权的艺术:Laravel自定义策略模式深度解析 在现代Web应用开发中,权限管理是核心功能之一。Laravel框架通过其策略模式提供了一种优雅的方式来处理授权问题。然而,随着应用的复杂性增加,内置的策略可能不足以满足所有需求。这…...
Git操作指令(随时更新)
Git操作指令 一、安装git 1、设置配置信息: # global全局配置 git config --global user.name "Your username" git config --global user.email "Your email"# 显示颜色 git config --global color.ui true# 配置别名,各种指令都…...
SpringSecurity自定义登录方式
自定义登录: 定义Token定义Filter定义Provider配置类中定义登录的接口 自定义AuthenticationToken public class EmailAuthenticationToken extends UsernamePasswordAuthenticationToken{public EmailAuthenticationToken(Object principal, Object credentials) …...

黑神话悟空是什么游戏 黑神话悟空配置要求 黑神话悟空好玩吗值得买吗 黑神话悟空苹果电脑可以玩吗
《黑神话:悟空》的类型定义是一款单机动作角色扮演游戏,但实际体验后会发现,游戏在很多设计上采用了「魂like」作品的常见元素。根据个人上手试玩,《黑神话:悟空》的推进节奏比较接近魂类游戏,Boss战也更像…...

深入浅出消息队列----【延迟消息的实现原理】
深入浅出消息队列----【延迟消息的实现原理】 粗说 RocketMQ 的设计细说 RocketMQ 的设计这样实现是否有什么问题? 本文仅是文章笔记,整理了原文章中重要的知识点、记录了个人的看法 文章来源:编程导航-鱼皮【yes哥深入浅出消息队列专栏】 粗…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

如何做好一份技术文档?从规划到实践的完整指南
如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...

鸿蒙Navigation路由导航-基本使用介绍
1. Navigation介绍 Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏、内容区和工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(Nav…...

高保真组件库:开关
一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...