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

关于网站开发网页上传和网站发布网页制作官方网站

关于网站开发网页上传和网站发布,网页制作官方网站,sem培训学校,个人网站制作成品1、简介 CVAE#xff08;Conditional Variational Autoencoder#xff0c;条件变分自编码器#xff09;是一种变分自编码器#xff08;VAE#xff09;的变体#xff0c;用于生成有条件的数据。在传统的变分自编码器中#xff0c;生成的数据是完全由潜在变量决定的…1、简介 CVAEConditional Variational Autoencoder条件变分自编码器是一种变分自编码器VAE的变体用于生成有条件的数据。在传统的变分自编码器中生成的数据是完全由潜在变量决定的而CVAE允许在生成过程中引入外部条件信息。具体来说CVAE在生成数据时除了使用随机采样的潜在变量外还会接收一个额外的条件信息。这个条件信息可以是类别标签、属性信息、或者其他形式的上下文信息取决于具体的任务。通过将条件信息作为输入提供给编码器和解码器CVAE能够生成与条件信息相关的数据。CVAE在许多任务中都很有用例如图像生成中的类别条件生成、属性编辑、生成特定风格的图像等。通过引入条件信息CVAE使得生成的数据更具有控制性和可解释性。本文利用CVAE输入数字图像和对应的标签。训练后生成0-9数字图像。 epoch10epoch20epoch30 2、代码 import torch import torch.nn as nn import torch.optim as optim import torchvision import torch.nn.functional as F from torchvision.utils import save_image# 变分自编码器 class CVAE(nn.Module):def __init__(self):super(CVAE, self).__init__()self.labels 10 # 标签数量# 编码器层self.fc1 nn.Linear(input_size self.labels, 512) # 编码器输入层self.fc2 nn.Linear(512, latent_size)self.fc3 nn.Linear(512, latent_size)# 解码器层self.fc4 nn.Linear(latent_size self.labels, 512) # 解码器输入层self.fc5 nn.Linear(512, input_size) # 解码器输出层# 编码器部分def encode(self, x):x F.relu(self.fc1(x)) # 编码器的隐藏表示mu self.fc2(x) # 潜在空间均值log_var self.fc3(x) # 潜在空间对数方差return mu, log_var# 重参数化技巧def reparameterize(self, mu, log_var): # 从编码器输出的均值和对数方差中采样得到潜在变量zstd torch.exp(0.5 * log_var) # 计算标准差eps torch.randn_like(std) # 从标准正态分布中采样得到随机噪声return mu eps * std # 根据重参数化公式计算潜在变量z# 解码器部分def decode(self, z):z F.relu(self.fc4(z)) # 将潜在变量 z 解码为重构图像return torch.sigmoid(self.fc5(z)) # 将隐藏表示映射回输入图像大小并应用 sigmoid 激活函数以产生重构图像# 前向传播def forward(self, x, y): # 输入图像 x标签 y 通过编码器和解码器得到重构图像和潜在变量的均值和对数方差x torch.cat([x, y], dim1)mu, log_var self.encode(x)z self.reparameterize(mu, log_var)z torch.cat([z, y], dim1)return self.decode(z), mu, log_var# 使用重构损失和 KL 散度作为损失函数 def loss_function(recon_x, x, mu, log_var): # 参数重构的图像、原始图像、潜在变量的均值、潜在变量的对数方差MSE F.mse_loss(recon_x, x.view(-1, input_size), reductionsum) # 计算重构图像 recon_x 和原始图像 x 之间的均方误差KLD -0.5 * torch.sum(1 log_var - mu.pow(2) - log_var.exp()) # 计算潜在变量的KL散度return MSE KLD # 返回二进制交叉熵损失和 KLD 损失的总和作为最终的损失值def sample_images(epoch):with torch.no_grad(): # 上下文管理器确保在该上下文中不会进行梯度计算。因为在这里只是生成样本而不需要梯度number 10# 生成标签sample_labels torch.arange(10).long().to(device) # 0-9的标签sample_labels_onehot F.one_hot(sample_labels, num_classes10).float()# 生成随机噪声sample torch.randn(number, latent_size).to(device) # 生成一个形状为 (64, latent_size) 的张量其中包含从标准正态分布中采样的随机数sample torch.cat([sample, sample_labels_onehot], dim1) # 连接图片和标签sample model.decode(sample).cpu() # 将随机样本输入到解码器中解码器将其映射为图像save_image(sample.view(number, 1, 28, 28), fsample{epoch}.png, nrowint(number / 2)) # 将生成的图像保存为文件if __name__ __main__:batch_size 512 # 批次大小epochs 30 # 学习周期sample_interval 10 # 保存结果的周期learning_rate 0.001 # 学习率input_size 784 # 输入大小latent_size 64 # 潜在变量大小# 载入 MNIST 数据集中的图片进行训练transform torchvision.transforms.Compose([torchvision.transforms.ToTensor()]) # 将图像转换为张量train_dataset torchvision.datasets.MNIST(root~/torch_datasets, trainTrue, transformtransform, downloadTrue) # 加载 MNIST 数据集的训练集设置路径、转换和下载为 Truetrain_loader torch.utils.data.DataLoader(train_dataset, batch_sizebatch_size, shuffleTrue) # 创建一个数据加载器用于加载训练数据设置批处理大小和是否随机打乱数据# 在使用定义的 AE 类之前有以下事情要做:# 配置要在哪个设备上运行device torch.device(cuda if torch.cuda.is_available() else cpu)# 建立 CVAE 模型并载入到 CPU 设备model CVAE().to(device)# Adam 优化器学习率optimizer optim.Adam(model.parameters(), lrlearning_rate)# 训练for epoch in range(epochs):train_loss 0for batch_idx, (data, labels) in enumerate(train_loader):data data.to(device) # 将输入数据移动到设备GPU 或 CPU上data data.view(-1, input_size) # 重塑维度labels F.one_hot(labels, num_classes10).float().to(device) # 转换为独热编码# print(labels[1])optimizer.zero_grad() # 进行反向传播之前需要将优化器中的梯度清零以避免梯度的累积# 重构图像 recon_batch、潜在变量的均值 mu 和对数方差 log_varrecon_batch, mu, log_var model(data, labels)loss loss_function(recon_batch, data, mu, log_var) # 计算损失loss.backward() # 计算损失相对于模型参数的梯度train_loss loss.item()optimizer.step() # 更新模型参数train_loss train_loss / len(train_loader) # # 计算每个周期的训练损失print(Epoch [{}/{}], Loss: {:.3f}.format(epoch 1, epochs, train_loss))# 每10次保存图像if (epoch 1) % sample_interval 0:sample_images(epoch 1)# 每训练10次保存模型if (epoch 1) % sample_interval 0:torch.save(model.state_dict(), fvae{epoch 1}.pth)
http://www.hkea.cn/news/14485148/

相关文章:

  • 企业seo网站推广seo规范培训
  • 免费手机h5模板网站模板长春网站制作教程
  • 石家庄手机模板建站建e室内设计网 周婷
  • 网站做优化得话从哪里优化做外国网站百度搜到
  • 无锡装饰网站建设排名做旅游的网站的要素
  • 北京网站设计制作关键词优化单页网站排名没有
  • 小企业网站建设查询凡科建设的网站如何
  • 大连城市建设网站上海注册公司流程及费用
  • 网站维护一般都是维护什么网站的类型有哪些
  • 西安有哪些网站建设外包公司机构ui设计培训
  • 建设银行网站登陆不了网站内部资源推广方法
  • 北京市教学名师奖建设项目网站建设哪里看额度
  • 郑州企业建站设计2021年11月最新新闻热点事件
  • PHP套模板做网站焦作住房和城乡建设厅网站
  • 怎么免费建商城网站吗淄博网站建设 熊掌号
  • 装修网站官网地区汽车修理网站建设
  • 做网站竞价怎么找客户阿里巴巴网站推广方式
  • 大连建设厅网站门户网站建设存在的问题和差距
  • 厦门专业网站建设建站购物网站app推广方案
  • 做流量网站吗南昌seo站外优化
  • 企业网站开发 宁波网络公司dw网站首页制作
  • 菜鸟制作个人网站网页实例企业年金如何提取
  • 网站留言效果怎么做长沙网站服务器
  • 郑州网站制作需要多少钱企业网络营销推广
  • 网站设计行业吃香么做游戏的php网站有哪些
  • 常州城乡和住房建设厅网站怎么注销建设银行网站用户
  • 个人网站 费用做网站的得花多少钱
  • 网站需要什么服务器潍坊seo推广
  • 个人网站前置审批项重庆免费发布信息网站
  • 企业网站事例wordpress小程序音频插件