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

Day53打卡 @浙大疏锦行

知识点回顾:

  1. 对抗生成网络的思想:关注损失从何而来
  2. 生成器、判别器
  3. nn.sequential容器:适合于按顺序运算的情况,简化前向传播写法
  4. leakyReLU介绍:避免relu的神经元失活现象
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")
# 设置中文字体支持
plt.rcParams["font.family"] = ["SimHei"]
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题# 检查GPU是否可用
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"使用设备: {device}")LATENT_DIM = 10     # 潜在空间的维度,这里根据任务复杂程度任选
EPOCHS = 10000      # 训练的回合数,一般需要比较长的时间
BATCH_SIZE = 32     # 每批次训练的样本数
LR = 0.0002         # 学习率
BETA1 = 0.5         # Adam优化器的参数# 检查是否有可用的GPU,否则使用CPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"Using device: {device}")# --- 2. 加载并预处理数据 ---iris = load_iris()
X = iris.data
y = iris.target# 只选择 'Setosa' (类别 0)
X_class0 = X[y == 0] # 一种简便写法# 数据缩放到 [-1, 1]
scaler = MinMaxScaler(feature_range=(-1, 1)) 
X_scaled = scaler.fit_transform(X_class0) # 转换为 PyTorch Tensor 并创建 DataLoader
# 注意需要将数据类型转为 float
real_data_tensor = torch.from_numpy(X_scaled).float() 
dataset = TensorDataset(real_data_tensor)
dataloader = DataLoader(dataset, batch_size=BATCH_SIZE, shuffle=True)print(f"成功加载并预处理数据。用于训练的样本数量: {len(X_scaled)}")
print(f"数据特征维度: {X_scaled.shape[1]}")
# --- 3. 构建模型 ---# (A) 生成器 (Generator)
class Generator(nn.Module):def __init__(self):super(Generator, self).__init__()self.model = nn.Sequential(nn.Linear(LATENT_DIM, 16),nn.ReLU(),nn.Linear(16, 32),nn.ReLU(),nn.Linear(32, 4),# 最后的维度只要和目标数据对齐即可nn.Tanh() # 输出范围是 [-1, 1])def forward(self, x):return self.model(x) # 因为没有像之前一样做定义x=某些东西,所以现在可以直接输出模型
# def forward(self, x):
#     x = self.encoder(x)
#     x = self.decoder(x)
#     return x
当网络结构不满足线性顺序执行时(如包含残差连接、多分支、条件判断等),必须手动编写forward()方法。例如:# def forward(self, x):
#     identity = x
#     out = self.conv1(x)
#     out = self.relu(out)
#     out = self.conv2(out)
#     out += identity  # 残差连接(无法用Sequential实现)
#     return self.relu(out)
# (B) 判别器 (Discriminator)
class Discriminator(nn.Module):def __init__(self):super(Discriminator, self).__init__()self.model = nn.Sequential(nn.Linear(4, 32),nn.LeakyReLU(0.2), # LeakyReLU 是 GAN 中的常用选择nn.Linear(32, 16),nn.LeakyReLU(0.2), # 负斜率参数为0.2nn.Linear(16, 1), # 这里最后输出1个神经元,所以用sigmoid激活函数nn.Sigmoid() # 输出 0 到 1 的概率)def forward(self, x):return self.model(x)

@浙大疏锦行

相关文章:

  • 三维重建 —— 3. 单视几何
  • 为应对激烈竞争环境,IBMS系统如何提升企业管理效率
  • 深入讲解 Ollama 的源码
  • 快速幂算法详解:从暴力到优雅的数学优化
  • ELK日志文件分析系统——概念
  • 实验复现:应用 RIR 触发器的 TrojanRoom 后门攻击实现
  • 网盘直链解析网页版
  • 贫血模型与充血模型
  • 实现网页中嵌入B站视频播放器:解决high_quality=1 失效的问题
  • 03 - ECA模块
  • Python-Flask实现登录
  • XAttention 计算步骤详解及示例
  • 58、嵌入式Servlet容器-【源码分析】切换web服务器与定制化
  • UDS协议中0x34、0x36、0x37服务详解及应用
  • 表达式的自动类型转换
  • HashMap vs LinkedHashMap
  • 短剧热浪,席卷海内外。
  • 2025企业级BI产品评测和推荐
  • 论坛系统自动化测试
  • GRUB2 启动配置的工作原理与优先级规则详解
  • 途牛电子商务网站建设/百度企业官网认证
  • 设计中国北京官网/seo优化排名
  • 石家庄 做网站/南宁百度推广排名优化
  • 买邮箱的网站/海外发布新闻
  • 光大成贤建设有限公司网站/上海公司排名
  • 信云科技的vps怎么做网站/百度一下百度搜索百度一下