当前位置: 首页 > news >正文

GAN(生成对抗网络)

简介:GAN生成对抗网络本质上是一种思想,其依靠神经网络能够拟合任意函数的能力,设计了一种架构来实现数据的生成。

原理:GAN的原理就是最小化生成器Generator的损失,但是在最小化损失的过程中加入了一个约束,这个约束就是使Generator生成的数据满足我们指定数据的分布,GAN的巧妙之处在于使用一个神经网络(鉴别器Discriminator)来自动判断生成的数据是否符合我们所需要的分布。

实现细节:

一:

        准备好我们想要让生成器生成的数据类型,比如MINIST手写数字集,包含1-10十个数字,一共60000张图片。生成器的目的就是学习这个数据集的分布。

二,

        定义一个生成器,用于判别一张图片是实际的还是生成器生成的,当生成器完美学习得到数据分布之后,鉴别器可能就分不清图片是生成器的还是实际的,这样的话生成器就能生成我们想要的图片了。

        生成器的训练过程为:实际数据输出结果1,生成数据输出结果为0,目的是学会区分真假数据,相当于提供一个约束,使生成数据符合指定分布。当鉴别生成器的数据分布时,只需要更新鉴别器的参数权重,不能够通过计算图将生成器的参数进行更新。

三,

        定义一个生成器,给定一个输入,他就能生成1-10里面的一个数字的图片。生成器的反向更新是根据鉴别器的损失来确定(被约束进行反向更新)。生成器的网络权重参数是单独的,反向更新时,只需要更新计算图当中属于生成器部分的参数。

下面给出生成1-0-1-0数据格式的代码:

# %%
import torch
import numpy
import torch.nn as nn
import matplotlib.pyplot as plt# %%
def gennerate1010():return torch.FloatTensor([numpy.random.uniform(0.9,1.1),numpy.random.uniform(0.,.1),numpy.random.uniform(0.9,1.1),numpy.random.uniform(0.0,.1)])# %%
def genneratexxxx():return torch.rand(4)# %%
class Discrimer(nn.Module):def __init__(self) -> None:father_obj = super(Discrimer,self)father_obj.__init__()self.create_model()self.counter = 0self.progress = []def create_model(self):self.model = nn.Sequential(nn.Linear(4,3),nn.Sigmoid(),nn.Linear(3,1),nn.Sigmoid(),           )self.loss_functon = nn.MSELoss()self.optimiser = torch.optim.SGD(self.parameters(),lr=0.01)def forward(self,x):return self.model(x)def train(self,x,targets):outputs = self.forward(x)loss = self.loss_functon(outputs,targets)self.counter += 1if self.counter%10 == 0:self.progress.append(loss.item())if self.counter%10000 == 0:print(self.counter)self.optimiser.zero_grad()loss.backward()self.optimiser.step()def plotprogress(self):plt.plot(self.progress,marker='*')plt.show()# %%
class Gennerater(nn.Module):def __init__(self) -> None:father_obj = super(Gennerater,self)father_obj.__init__()self.create_model()self.counter = 0self.progress = []def create_model(self):self.model = nn.Sequential(nn.Linear(1,3),nn.Sigmoid(),nn.Linear(3,4),nn.Sigmoid(),           )# 这个优化器只能优化生成器部分的参数self.optimiser = torch.optim.SGD(self.parameters(),lr=0.01)def forward(self,x):return self.model(x)def train(self,D,x,targets):g_outputs = self.forward(x)d_outputs = D.forward(g_outputs)# 使用鉴别器的loss函数,但是只更新生成器的参数,生成器的参数需要根据鉴别器的约束进行更新loss = D.loss_functon(d_outputs,targets)self.counter += 1if self.counter%10 == 0:self.progress.append(loss.item())if self.counter%10000 == 0:print(self.counter)self.optimiser.zero_grad()loss.backward()self.optimiser.step()def plotprogress(self):plt.plot(self.progress,marker='*')plt.show()# %%
D = Discrimer()# %%
G = Gennerater()# %%
for id in range(15000):# 喂入实际数据给鉴别器D.train(gennerate1010(),torch.FloatTensor([1.]))# 喂入生成的数据,使用detach从计算图脱离,用于更新鉴别器,而生成器得不到更新D.train(G.forward(torch.FloatTensor([0.5]).detach()),torch.FloatTensor([0.0]))G.train(D,torch.FloatTensor([0.5]),torch.FloatTensor([1.]))# %%
D.plotprogress()# %%
G.plotprogress()# %%
G.forward(torch.FloatTensor([0.5]))

参考:PyTorch生成对抗网络编程

相关文章:

GAN(生成对抗网络)

简介:GAN生成对抗网络本质上是一种思想,其依靠神经网络能够拟合任意函数的能力,设计了一种架构来实现数据的生成。 原理:GAN的原理就是最小化生成器Generator的损失,但是在最小化损失的过程中加入了一个约束&#xff0…...

实时同步ES技术选型:Mysql+Canal+Adapter+ES+Kibana

基于之前的文章,精简操作而来 让ELK在同一个docker网络下通过名字直接访问Ubuntu服务器ELK部署与实践使用 Docker 部署 canal 服务实现MySQL和ES实时同步Docker部署ES服务,canal全量同步的时候内存爆炸,ES/Canal Adapter自动关闭&#xff0c…...

禅道后台命令执行漏洞

漏洞简介 禅道是第一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、 组织管理和事务管理于一体,是一款专业的研发项目管理软件,完整地覆盖了项目管理的核心流程。 禅道管理思想注重实效,功能完备丰富,…...

基于Spark+django的国漫推荐系统--计算机毕业设计项目

近年来,随着互联网的蓬勃发展,企事业单位对信息的管理提出了更高的要求。以传统的管理方式已无法满足现代人们的需求。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,随着各行业的不断发展,基…...

向量数据库 Milvus:实现高效向量搜索的技术解析

引言 随着人工智能、机器学习和深度学习技术的不断发展,越来越多的应用开始使用向量表示数据。向量数据具有高维、稀疏和相似性等特点,传统的关系型数据库和键值存储在处理这类数据时面临许多挑战。为了满足大规模、高并发的向量搜索需求,出现…...

恒运资本:信创概念再度活跃,华是科技再创新高,南天信息等涨停

信创概念21日盘中再度活跃,截至发稿,华是科技涨超17%,盘中一度触及涨停再创新高,中亦科技涨超13%亦创出新高,久其软件、南天信息、新炬网络、英飞拓均涨停。 音讯面上,自8月3日以来,财政部官网连…...

Synchronized锁升级

Java Synchronized 重量级锁原理深入剖析上(互斥篇) 为什么映入Monitor 处在重量级锁状态时说明有线程没拿到锁需要阻塞等待锁,当拥有锁的线程释放锁后唤醒它继续竞争锁。此处就引入了一个问题:其它线程如何找到被阻塞的线程?我们很容易想到…...

记一个宏定义写法

记一个宏定义写法 最近在看libevent源码,看到一个有趣的宏写法。特此记录。方便日后巩固学习。 源码写法: #define HT_FIND(name, head, elm) name##_HT_FIND((head), (elm))首先来简单分析一下: 定睛一看是一个宏,##是连接符…...

【数据结构】C语言实现栈(详细解读)

前言: 💥🎈个人主页:​​​​​​Dream_Chaser~ 🎈💥 ✨✨专栏:http://t.csdn.cn/oXkBa ⛳⛳本篇内容:c语言数据结构--C语言实现栈 目录 什么是栈 栈的概念及结构 实现栈的方式 链表的优缺点: 顺序表的优缺点: 栈…...

3、Spring_容器执行

容器执行点 1.整合 druid 连接池 添加依赖 <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version> </dependency>1.硬编码方式整合 新建德鲁伊配置 <?xml version"1.…...

五、pikachu之RCE

文章目录 1、RCE概述2、exec "ping"3、exec"evel"4、连接符 1、RCE概述 RCE&#xff08;emote command/code execute&#xff09;&#xff1a;可以让攻击者直接向后台服务器远程注入操作系统命令或者代码&#xff0c;从而控制后台系统。 远程系统命令执行 …...

最大不相交区间数量

给定 N 个闭区间 [ai,bi]&#xff0c;请你在数轴上选择若干区间&#xff0c;使得选中的区间之间互不相交&#xff08;包括端点&#xff09;。 输出可选取区间的最大数量。 输入格式 第一行包含整数 N&#xff0c;表示区间数。 接下来 N 行&#xff0c;每行包含两个整数 ai,…...

Oracle给表空间添加容量

假如给SYSTEM表空间添加 查看文件位置和容量&#xff1a;Select * FROM DBA_DATA_FILES; FILE_NAME就是要修改的文件 查看每一个表空间的容量&#xff0c;单位MB&#xff1a; SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces…...

2023年大数据与区块链国际会议 | EI、Scoups检索

会议简介 Brief Introduction 2023年大数据与区块链国际会议&#xff08;ICBDB 2023&#xff09; 会议时间&#xff1a;2023年11月17 -19日 召开地点&#xff1a;中国西安 大会官网&#xff1a;www.icobdb.org 2023年大数据与区块链国际会议&#xff08;ICBDB 2023&#xff09;…...

【洛谷算法题】P1000-超级玛丽游戏【入门1顺序结构】

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P1000-超级玛丽游戏【入门1顺序结构】&#x1f30f;题目描述&#x1f30f;输入格…...

ubuntu or kylinos软件安装错误的终极解决方案

一、前言 所谓的软件安装,不管是那个系统,都是通过一定的方法把文件从源复制到目的,然后做一些配置工作,使其能正常的运行,卸载。 对于Linux来说,其目录的高度组织化,以及各软件依赖关系的复杂性,使得软件包数据库显得非常重要。 简单来说,软件包数据库最主要记录两…...

30分钟Python自动化从入门到实战(一)

第一章:自动化测试基础 第一节 软件测试分类 关于软件测试领域名词颇多&#xff0c;发现有许多测试新手混淆概念&#xff0c;从不同的角度可以将软件测试有不同的分类的方法&#xff1b;所以&#xff0c;这里汇总常见软件测试的相关名词&#xff0c;对软件测试领域有个概括的…...

FOC之SVPWM学习笔记

一、参考资料 【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术 - 知乎FOC入门教程_zheng是在下的博客-CSDN博客DengFOC官方文档技术干货 |【自制】FOC驱动板 二、FOC控制算法流程框图 在FOC控制中主要用到三个PID环&#xff0c;从内到外依次是&#xff1a;电流环、速度环、位…...

DSO 系列文章(3)——DSO后端正规方程构造与Schur消元

文章目录 DSO代码注释&#xff1a;https://github.com/Cc19245/DSO-CC_Comments...

php 使用ES

Download Elasticsearch | Elastic <?phprequire vendor/autoload.php;use Elasticsearch\ClientBuilder;$client ClientBuilder::create()->build();# 索引一个文档 # Version 7.11 $params [index > my_index,id > my_id,body > [testField > abc] ];$…...

5步实用指南:永久解锁Cursor Pro高级功能的完整解决方案

5步实用指南&#xff1a;永久解锁Cursor Pro高级功能的完整解决方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your t…...

6.滑动窗口和双指针

文章目录双指针对撞指针快慢指针滑动窗口双指针 双指针&#xff1a;指的是在遍历对象的过程中&#xff0c;不是普通的使用单个指针进行访问&#xff0c;而是使用两个相同方向&#xff08;快慢指针&#xff09;或者相反方向&#xff08;对撞指针&#xff09;的指针进行扫描&…...

手把手教你用CT107D板子复现蓝桥杯省赛题:光敏传感器触发与长按按键的实战编程

从零实现CT107D光敏传感与长按按键&#xff1a;蓝桥杯省赛级开发指南 硬件准备与环境搭建 打开CT107D开发板的包装盒时&#xff0c;那股新电路板特有的松香味总是让人兴奋。作为蓝桥杯官方指定平台&#xff0c;这块板子集成了我们需要的所有外设模块。先找到板子右下角的光敏…...

使用AI(龙虾)开发的经验总结

一、使用AI辅助开发的两个核心前提 1.先搞清楚再开口&#xff1a;明确问题边界与目标 在向AI描述问题之前&#xff0c;开发者必须自己先理清整个业务流程、技术上下文和预期目标。这包括&#xff1a; 代码需要改哪里&#xff1f; 明确具体的文件、类、方法或模块。改什么&#…...

告别Selenium!用DrissionPage的ChromiumPage和SessionPage,5分钟搞定登录与爬虫

告别Selenium&#xff01;用DrissionPage的ChromiumPage和SessionPage&#xff0c;5分钟搞定登录与爬虫 在Python自动化测试和爬虫开发领域&#xff0c;Selenium曾经是无可争议的王者。但随着时间的推移&#xff0c;开发者们逐渐意识到Selenium的局限性——复杂的配置、缓慢的执…...

长期使用Taotoken官方折扣活动对项目运营成本的实际影响

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken官方折扣活动对项目运营成本的实际影响 在项目开发与运营中&#xff0c;大模型API调用成本是技术决策者持续关注的…...

FreeRTOS优先级设置踩坑实录:为什么你的高优先级任务跑不起来?

FreeRTOS优先级设置实战指南&#xff1a;从原理到调试的完整解决方案 当你第一次在FreeRTOS中创建多个任务并设置不同优先级时&#xff0c;可能会遇到一个令人困惑的现象&#xff1a;明明设置了高优先级任务&#xff0c;但系统运行时低优先级任务却先执行。这种情况在从其他RT…...

STM32 ADS1115接口文件(HAL库+硬件IIC)

STM32 ADS1115接口文件&#xff08;HAL库硬件IIC&#xff09; 【下载地址】STM32ADS1115接口文件HAL库硬件IIC 本资源包专为STM32系列微控制器设计&#xff0c;旨在简化通过HAL库利用硬件IIC接口与ADS1115高精度模拟到数字转换器(ADC)交互的过程。ADS1115是一款高性能的16位ΔΣ…...

接入Taotoken多模型路由后服务端响应稳定性提升感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 接入Taotoken多模型路由后服务端响应稳定性提升感受 1. 背景&#xff1a;生产环境对AI服务稳定性的需求 在构建依赖大模型API的生…...

如何用jStat轻松实现电商数据分析和科学研究:JavaScript统计库的10个实际应用案例

如何用jStat轻松实现电商数据分析和科学研究&#xff1a;JavaScript统计库的10个实际应用案例 【免费下载链接】jstat JavaScript Statistical Library 项目地址: https://gitcode.com/gh_mirrors/js/jstat jStat是一个功能强大的JavaScript统计库&#xff0c;它为开发者…...