GAN的损失函数和二元交叉熵损失的对应及代码

以下解释为GPT生成

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
这里有个问题,使用二元交叉熵,的时候生成器的损失如何体现
在这里插入图片描述
看代码

import torch
import torch.nn as nn
import torch.optim as optim# 设置设备为GPU或CPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")# 定义生成器 (Generator)
class Generator(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(Generator, self).__init__()self.model = nn.Sequential(nn.Linear(input_size, hidden_size),nn.ReLU(),nn.Linear(hidden_size, hidden_size),nn.ReLU(),nn.Linear(hidden_size, output_size),nn.Tanh()  # 输出范围在 [-1, 1] 之间)def forward(self, x):return self.model(x)# 定义判别器 (Discriminator)
class Discriminator(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(Discriminator, self).__init__()self.model = nn.Sequential(nn.Linear(input_size, hidden_size),nn.ReLU(),nn.Linear(hidden_size, hidden_size),nn.ReLU(),nn.Linear(hidden_size, output_size),nn.Sigmoid()  # 输出概率 [0, 1])def forward(self, x):return self.model(x)# 超参数设置
input_size = 100  # 生成器输入噪声向量的维度
hidden_size = 128
output_size = 1   # 判别器的输出是一个概率
data_size = 784   # 假设输入数据的维度(例如,MNIST 图片 28x28 展开成 784 维向量)# 初始化生成器和判别器
G = Generator(input_size, hidden_size, data_size).to(device)
D = Discriminator(data_size, hidden_size, output_size).to(device)# 定义损失函数(二元交叉熵损失)
criterion = nn.BCELoss()# 优化器
lr = 0.0002
optimizer_G = optim.Adam(G.parameters(), lr=lr)
optimizer_D = optim.Adam(D.parameters(), lr=lr)# 生成随机噪声的函数(用于生成器)
def generate_noise(batch_size, input_size):return torch.randn(batch_size, input_size).to(device)# 假设我们有一个简单的生成数据和真实数据的函数
def get_real_data(batch_size):# 这里我们用随机生成的假数据来模拟真实数据return torch.randn(batch_size, data_size).to(device)# 训练步骤
epochs = 1000
batch_size = 64for epoch in range(epochs):# 训练判别器real_data = get_real_data(batch_size)  # 获取真实数据noise = generate_noise(batch_size, input_size)  # 生成噪声fake_data = G(noise)  # 生成数据# 判别器的目标:正确区分真实数据和生成数据real_labels = torch.ones(batch_size, 1).to(device)  # 真实数据的标签为1fake_labels = torch.zeros(batch_size, 1).to(device)  # 生成数据的标签为0# 判别器对真实数据的损失outputs_real = D(real_data)D_loss_real = criterion(outputs_real, real_labels)# 判别器对生成数据的损失outputs_fake = D(fake_data.detach())  # 对生成数据的判别(生成数据不传递梯度给生成器)D_loss_fake = criterion(outputs_fake, fake_labels)# 判别器总损失D_loss = D_loss_real + D_loss_fake# 更新判别器optimizer_D.zero_grad()D_loss.backward()optimizer_D.step()# 训练生成器noise = generate_noise(batch_size, input_size)  # 生成新的噪声fake_data = G(noise)  # 生成新的假数据# 生成器的目标:欺骗判别器,让判别器认为生成的数据是真实的outputs_fake = D(fake_data)G_loss = criterion(outputs_fake, real_labels)  # 生成器希望生成的数据被判为真实数据,因此标签设为1# 更新生成器optimizer_G.zero_grad()G_loss.backward()optimizer_G.step()# 每隔一段时间打印损失if epoch % 100 == 0:print(f"Epoch [{epoch}/{epochs}] | D Loss: {D_loss.item():.4f} | G Loss: {G_loss.item():.4f}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1537625.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Java EE】文件IO

Author:MTingle major:人工智能 --------------------------------------- Build your hopes like a tower! 目录 一、文件是什么? 二、针对文件系统操作的API 1.文件路径,文件名,文件是否存在 2. 创建文件 3.删除文件&#…

软考中级软件设计师——数据结构与算法基础学习笔记

软考中级软件设计师——数据结构与算法基本概念 什么是数据数据元素、数据项数据结构逻辑结构物理结构(存储结构) 算法什么是算法五个特性算法效率的度量时间复杂度空间复杂度 什么是数据 数据是信息的载体,是描述客观事物属性的数、字符及所…

Flask-SQLAlchemy一对多 一对一 多对多关联

一. 组织一个 Flask 项目通常需要遵循一定的结构,以便代码清晰、可维护。下面是一个典型的 Flask 项目结构: my_flask_app/ │ ├── app/ │ ├── __init__.py │ ├── models.py │ ├── views.py │ ├── forms.py │ ├── tem…

【Matlab 肌电信号分析】

一、数据预处理 1.1 数据读取 使用matlab从rhd文件中读取原始数据,共64个通道。 1.2 数据滤波 使用 60Hz的Notch filter 和150Hz的高通Butterworth滤波器进行降噪 二、波峰提取 > 每个通道分别根据相应的规则提取出波峰、波谷附近的波形。 三、信号聚类 3.1 降…

Postman接口测试、Python接口自动化测试

接口自动化测试笔记,自用 来源:https://www.bilibili.com/video/BV1Cs4y1C73Hp45&vd_source37bf552472afa993fb78c918d1dea2bc 目录 一、Postman接口测试 1.postman自动关联 1)创建环境并选择 2)使用自动关联技术&#xf…

iPhone 上丢失了重要的联系人?如何恢复已删除的 iPhone 联系人

丢失 iPhone 上的联系人可能会带来灾难。无论是一份很棒的新工作机会、潜在的恋爱对象,还是您一直想打电话的老朋友,如果您打开“联系人”应用时看到空白,这绝不是好事。不过,一切并非全无,仍然可以通过备份或专业软件…

月薪14K的网安公司,来做一下笔试题呀~

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 网络安全简介…

【Linux】基础IO认识(2)

基础IO认识(2) 1、补充系统调用1、1、read调用1、2、stat 2、重定向2、1、文件描述符的分配规则2、2、实现重定向(dup2) 3、缓冲区的理解3、1、缓冲区典型实例3、2、缓冲区代码形式展示 4、深化和实践利用4、1、在shell中加入重定向4、2、简单实现库的封…

模拟火车世界5/Train Sim World 5 (容量289GB)百度网盘下载

版本介绍 Build.15665692|容量289GB|官方简体中文|支持键盘.鼠标.手柄 游戏介绍 来《模拟火车世界5》里,全世界的铁路尽属于你!在标志性的特色城市中,驾驶列车穿越铁轨,飞驰在 3 条全新线路上,用新的角色迎接新的挑战…

教师薪酬管理系统的设计与实现

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,老师信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广…

【FreeRL】Rainbow_DQN的实现和测试

文章目录 前言环境1 PER note2 C51 note3 Noisy note4 Rainbow note其他 前言 具体代码实现见:https://github.com/wild-firefox/FreeRL/blob/main/DQN_file/DQN_with_tricks.py 将其中所有的trick都用上即为Rainbow_DQN。 效果如下:(学习曲…

vue 案例使用

el-switch 按键的使用 <el-switchclass"switchStyle" v-model"boolValue" :active-value"1" :inactive-value"0" active-text"ON" inactive-text"OFF" active-color"#13ce66" inactive-color&qu…

明星御用剪辑师亲授:PR剪辑技巧大全

在这个视频内容大爆炸的时代&#xff0c;一个好的剪辑工具就如同一位得力的助手&#xff0c;能让你在视频制作的道路上事半功倍。今天&#xff0c;就让我来为大家揭秘几款PR剪辑工具&#xff0c;它们各具特色&#xff0c;能够帮助你轻松应对各种剪辑需求。让我们开始吧&#xf…

kali——tshark的使用

目录 前言 使用方法 tshark提取流量为文档 前言 tshark 是一个命令行的网络分析工具&#xff0c;它用于捕获和分析网络流量。它支持多种网络协议&#xff0c;包括 TCP、UDP、ICMP 等。Tshark 可以用于调试网络问题、进行安全审计、分析应用程序性能等。 在 Kali Linux 中&…

绿咖啡豆缺陷检测系统源码分享

绿咖啡豆缺陷检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

ubuntu虚拟机装载共享文件夹导致的诡异错误

最近使用vmware station 15 安装了 ubuntu22.04 的虚拟机。在装载共享文件夹不久后便会出现诡异的错误。目前在网络上好像没有人把这归结到装载共享文件夹的问题上&#xff0c;故以供参考。 第一次&#xff1a; 在装载之后大概第二次开机&#xff0c;出现报错界面。 提示蓝牙…

驱动器磁盘未格式化恢复实战

驱动器磁盘未格式化的深度剖析 在日常的数字生活中&#xff0c;驱动器作为数据存储的重要载体&#xff0c;承载着用户无数的珍贵资料。然而&#xff0c;当遇到“驱动器中的磁盘未被格式化”的提示时&#xff0c;这份平静往往会被瞬间打破。这一状况不仅让用户感到困惑和焦虑&a…

精选评测!分享5款AI写论文最好用的软件排名

写作是一项既费时又费力的任务&#xff0c;尤其是对于科研人员来说&#xff0c;撰写论文更是一项必不可少的挑战。幸运的是&#xff0c;现在有多款免费的AI写作工具可以大大简化这一过程。小编精心挑选了5款免费的AI写作工具&#xff0c;旨在帮助大家提高写作效率&#xff0c;让…

word文档的读入(8)

如何读取答题卡中的选择题答案&#xff0c;并把所有的信息导入到Excel表格中&#xff5e; 在初始化了字典中的字段并获取了标准答案和学生答案后&#xff0c;现在只需使用if语句将学生答案studentAnswerOne和标准答案value进行比较。选择题一道题2分&#xff0c;答案正确时&…

pgsql的威胁操作--危险行为

pgsql的威胁操作--危险行为 要在PostgreSQL中列出所有数据库并删除指定的数据库 进入容器Pgsql docker exec -it 04d438beab57 /bin/bash 登录pgsql 使用以下命令登录到PostgreSQL psql -U postgres -h localhost -p 5432 列出数据库详细信息 postgres# \l 这将显示所有…