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

网站开发技术技巧北京网站制作飞沐

网站开发技术技巧,北京网站制作飞沐,建设搜索引擎网站,网站开发人员结构对抗生成网络 知识点回顾#xff1a; 对抗生成网络的思想#xff1a;关注损失从何而来生成器、判别器nn.sequential容器#xff1a;适合于按顺序运算的情况#xff0c;简化前向传播写法leakyReLU介绍#xff1a;避免relu的神经元失活现象 对抗生成网络#xff08;GAN 对抗生成网络的思想关注损失从何而来生成器、判别器nn.sequential容器适合于按顺序运算的情况简化前向传播写法leakyReLU介绍避免relu的神经元失活现象 对抗生成网络GAN 知识点回顾 对抗生成网络的思想 思想就像在餐厅中有一个厨师生成器负责制作假菜一个评论家判别器负责区分真菜和假菜。厨师的目标是制作出评论家无法区分的假菜而评论家的目标是找出假菜。通过不断的对抗训练厨师的厨艺生成器的生成能力和评论家的鉴赏力判别器的判别能力都会不断提高。 对抗生成网络GAN由两个模型组成生成器和判别器。生成器的目标是生成尽可能真实的样本而判别器的目标是区分真实样本和生成样本。两者通过对抗训练不断优化最终达到纳什均衡。 损失来源GAN 的损失函数来自生成器和判别器之间的对抗。判别器的损失来自于它对真实样本和生成样本的误判生成器的损失来自于它生成的样本被判别器识别为假样本。 生成器和判别器 生成器厨师负责制作假菜目标是让评论家无法区分真假菜。类似于一个“伪造者”负责生成尽可能真实的样本。 判别器评论家负责区分真菜和假菜目标是找出所有的假菜。类似于一个“警察”负责区分真实样本和生成样本。 nn.Sequential 容器 定义nn.Sequential 是一个顺序容器用于按顺序堆叠多个神经网络层。这简化了前向传播的写法适合于层与层之间按顺序运算的情况。 LeakyReLU 介绍 定义就像是餐厅的菜谱按顺序列出每个烹饪步骤简化了厨师的烹饪流程。LeakyReLU 是 ReLU 的变种允许一小部分梯度通过避免神经元失活现象。类似于在烹饪过程中允许某些食材保留一定的原始风味避免某些食材完全失活从而丰富菜品的层次感。 公式LeakyReLU(x) max(0.01 * x, x)其中 0.01 是负斜率。 作业 对于心脏病数据集对于病人这个不平衡的样本用 GAN 来学习并生成病人样本观察不用 GAN 和用 GAN 的 F1 分数差异 步骤 数据准备加载心脏病数据集处理数据以适应 GAN 的输入要求。 定义生成器和判别器使用 nn.Sequential 定义生成器和判别器。 训练 GAN通过对抗训练生成器和判别器。 数据增强使用生成器生成额外的病人样本增加数据集的多样性。 模型训练使用原始数据集和增强后的数据集分别训练分类模型比较 F1 分数。 import pandas as pd import numpy as np import torch import torch.nn as nn import torch.optim as optim from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import f1_score from sklearn.impute import SimpleImputer# 加载数据 df pd.read_csv(heart.csv)# 特征和标签分离 X df.drop(target, axis1) y df[target]# 检查缺失值 print(原始数据集中缺失值情况) print(df.isnull().sum())# 使用SimpleImputer填补缺失值 imp SimpleImputer(missing_valuesnp.nan, strategymean) X_imputed imp.fit_transform(X)# 将数据分为病人和健康人 X_patients X_imputed[y 1] X_healthy X_imputed[y 0]# 特征标准化 scaler StandardScaler() X_patients scaler.fit_transform(X_patients) X_healthy scaler.transform(X_healthy)# 将数据转换为PyTorch张量 X_patients_tensor torch.tensor(X_patients, dtypetorch.float32) X_healthy_tensor torch.tensor(X_healthy, dtypetorch.float32)# 定义生成器 generator nn.Sequential(nn.Linear(100, 128),nn.ReLU(),nn.Linear(128, 256),nn.ReLU(),nn.Linear(256, X_patients.shape[1]),nn.Tanh() )# 定义判别器 discriminator nn.Sequential(nn.Linear(X_patients.shape[1], 256),nn.LeakyReLU(0.2),nn.Linear(256, 128),nn.LeakyReLU(0.2),nn.Linear(128, 1),nn.Sigmoid() )# 定义损失函数和优化器 criterion nn.BCELoss() lr 0.0002 optimizer_g optim.Adam(generator.parameters(), lrlr) optimizer_d optim.Adam(discriminator.parameters(), lrlr)# 训练 GAN num_epochs 1000 batch_size 32for epoch in range(num_epochs):# 训练判别器# 真实样本real_data X_patients_tensor[torch.randint(0, X_patients_tensor.shape[0], (batch_size,))]real_labels torch.ones(batch_size, 1)d_real_loss criterion(discriminator(real_data), real_labels)# 生成样本noise torch.randn(batch_size, 100)fake_data generator(noise)fake_labels torch.zeros(batch_size, 1)d_fake_loss criterion(discriminator(fake_data.detach()), fake_labels)# 总损失和优化d_loss d_real_loss d_fake_lossoptimizer_d.zero_grad()d_loss.backward()optimizer_d.step()# 训练生成器noise torch.randn(batch_size, 100)fake_data generator(noise)g_loss criterion(discriminator(fake_data), real_labels)optimizer_g.zero_grad()g_loss.backward()optimizer_g.step()if epoch % 100 0:print(fEpoch [{epoch}/{num_epochs}] | D Loss: {d_loss.item():.4f} | G Loss: {g_loss.item():.4f})# 生成额外的病人样本 num_new_samples 100 noise torch.randn(num_new_samples, 100) generated_samples generator(noise).detach().numpy()# 反标准化生成的样本 generated_samples scaler.inverse_transform(generated_samples)# 将生成的样本添加到原始数据集中 X_generated pd.DataFrame(generated_samples, columnsdf.columns[:-1]) y_generated pd.Series([1] * num_new_samples, nametarget)# 合并原始数据集和生成的数据集 X_augmented pd.concat([df, X_generated]) y_augmented pd.concat([y, y_generated])# 使用 SimpleImputer 填补增强数据集中的缺失值 X_augmented_imputed imp.transform(X_augmented)# 使用原始数据集训练模型 X_train, X_test, y_train, y_test train_test_split(X_imputed, y, test_size0.2, random_state42) model LogisticRegression() model.fit(X_train, y_train) y_pred model.predict(X_test) f1_original f1_score(y_test, y_pred)# 使用增强后的数据集训练模型 X_augmented_train, X_augmented_test, y_augmented_train, y_augmented_test train_test_split(X_augmented_imputed, y_augmented, test_size0.2, random_state42) model_augmented LogisticRegression() model_augmented.fit(X_augmented_train, y_augmented_train) y_augmented_pred model_augmented.predict(X_augmented_test) f1_augmented f1_score(y_augmented_test, y_augmented_pred)print(fOriginal F1 Score: {f1_original:.4f}) print(fAugmented F1 Score: {f1_augmented:.4f}) import pandas as pd import numpy as np import torch import torch.nn as nn import torch.optim as optim from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import f1_score from sklearn.impute import SimpleImputer# 加载数据 df pd.read_csv(heart.csv)# 特征和标签分离 X df.drop(target, axis1) y df[target]# 检查缺失值 print(原始数据集中缺失值情况) print(df.isnull().sum())# 使用 SimpleImputer 填补缺失值 imp SimpleImputer(missing_valuesnp.nan, strategymean) X_imputed imp.fit_transform(X)# 将数据分为病人和健康人 X_patients X_imputed[y 1] X_healthy X_imputed[y 0]# 特征标准化 scaler StandardScaler() X_patients scaler.fit_transform(X_patients) X_healthy scaler.transform(X_healthy)# 将数据转换为 PyTorch 张量 X_patients_tensor torch.tensor(X_patients, dtypetorch.float32) X_healthy_tensor torch.tensor(X_healthy, dtypetorch.float32)# 定义生成器 generator nn.Sequential(nn.Linear(100, 128),nn.ReLU(),nn.Linear(128, 256),nn.ReLU(),nn.Linear(256, X_patients.shape[1]),nn.Tanh() )# 定义判别器 discriminator nn.Sequential(nn.Linear(X_patients.shape[1], 256),nn.LeakyReLU(0.2),nn.Linear(256, 128),nn.LeakyReLU(0.2),nn.Linear(128, 1),nn.Sigmoid() )# 定义损失函数和优化器 criterion nn.BCELoss() lr 0.0002 optimizer_g optim.Adam(generator.parameters(), lrlr) optimizer_d optim.Adam(discriminator.parameters(), lrlr)# 训练 GAN num_epochs 1000 batch_size 32for epoch in range(num_epochs):# 训练判别器# 真实样本real_data X_patients_tensor[torch.randint(0, X_patients_tensor.shape[0], (batch_size,))]real_labels torch.ones(batch_size, 1)d_real_loss criterion(discriminator(real_data), real_labels)# 生成样本noise torch.randn(batch_size, 100)fake_data generator(noise)fake_labels torch.zeros(batch_size, 1)d_fake_loss criterion(discriminator(fake_data.detach()), fake_labels)# 总损失和优化d_loss d_real_loss d_fake_lossoptimizer_d.zero_grad()d_loss.backward()optimizer_d.step()# 训练生成器noise torch.randn(batch_size, 100)fake_data generator(noise)g_loss criterion(discriminator(fake_data), real_labels)optimizer_g.zero_grad()g_loss.backward()optimizer_g.step()if epoch % 100 0:print(fEpoch [{epoch}/{num_epochs}] | D Loss: {d_loss.item():.4f} | G Loss: {g_loss.item():.4f})# 生成额外的病人样本 num_new_samples 100 noise torch.randn(num_new_samples, 100) generated_samples generator(noise).detach().numpy()# 反标准化生成的样本 generated_samples scaler.inverse_transform(generated_samples)# 将生成的样本转换为 DataFrame generated_df pd.DataFrame(generated_samples, columnsX.columns)# 合并原始数据集和生成的数据集 augmented_df pd.concat([df, generated_df]) augmented_df[target] pd.concat([y, pd.Series([1] * num_new_samples)])# 使用 SimpleImputer 填补增强数据集中的缺失值 augmented_imputer SimpleImputer(missing_valuesnp.nan, strategymean) augmented_imputer.fit(X) # 使用原始特征来拟合 X_augmented_imputed augmented_imputer.transform(augmented_df.drop(target, axis1))# 使用原始数据集训练模型 X_train, X_test, y_train, y_test train_test_split(X_imputed, y, test_size0.2, random_state42) model LogisticRegression() model.fit(X_train, y_train) y_pred model.predict(X_test) f1_original f1_score(y_test, y_pred)# 使用增强后的数据集训练模型 X_augmented_train, X_augmented_test, y_augmented_train, y_augmented_test train_test_split(X_augmented_imputed, augmented_df[target], test_size0.2, random_state42) model_augmented LogisticRegression() model_augmented.fit(X_augmented_train, y_augmented_train) y_augmented_pred model_augmented.predict(X_augmented_test) f1_augmented f1_score(y_augmented_test, y_augmented_pred)print(fOriginal F1 Score: {f1_original:.4f}) print(fAugmented F1 Score: {f1_augmented:.4f}) ps如果你学有余力对于gan的损失函数的理解建议去找找视频看看如果只是用没必要学 浙大疏锦行
http://www.dnsts.com.cn/news/173239.html

相关文章:

  • 网站顶部悬浮广告代码wordpress登录微信插件下载失败
  • 如何使用qq空间做推广网站中国建设人才网站
  • 什么网站建设策划方案 论文悟空crm系统
  • 网站管理员怎样管理员权限百度做网站续费费用
  • 公司营销型网站惠州seo网站推广
  • 无锡企业推广网站中国网新重庆
  • c 中怎么用html5做网站做网站一般做几个尺寸
  • 怎么做qq网站郑州网站建设企业推荐
  • 搭配网站开发的开题报告北京代建网站
  • 做网站 带宽 多少网站建设陕icp
  • 学做网站会员wordpress 插件数据
  • wordpress设置ssl网站打不开站长工具域名解析
  • 博客网站的建设嘉兴企业网站建设推广
  • 网站备案后可以改名吗山西建设机械网站首页
  • 如何看网站空间问题虚拟主机和服务器
  • .网站空间vps做网站 推广
  • 2017年网站建设视频教程wordpress 依赖环境
  • 网站首页命名怎么根据别人的网站做自己的网站
  • 国税网站建设调查报告网站空间多大合适
  • 企业网站建设视频教程如何评价网站建设
  • 大兴安岭做网站广州网站建设天维
  • 万宁市住房和城乡建设局网站网站基础开发成本
  • 推广型网站建设机构给vps安装wordpress
  • 政务网站建设工作计划结尾做淘宝券推广的网站有哪些
  • 如何申请免费网站域名做推广的技巧
  • 外贸建站推广公司充电宝关键词优化
  • 做网站背景的图片大小现在阳性最新情况
  • 视频网站做漫画360免费建站连接
  • 银川网站制作wordpress目录链接加html
  • 廊坊怎么做网站广东十大广告公司