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

网站 百度搜不到北京朝阳区小区

网站 百度搜不到,北京朝阳区小区,济南网站自然优化,怎么办一个网站人工智能例子汇总#xff1a;AI常见的算法和例子-CSDN博客 变分自编码器#xff08;Variational Autoencoder, VAE#xff09;是一种生成模型#xff0c;属于深度学习中的无监督学习方法。它通过学习输入数据的潜在分布#xff08;Latent Distribution#xff09;… 人工智能例子汇总AI常见的算法和例子-CSDN博客  变分自编码器Variational Autoencoder, VAE是一种生成模型属于深度学习中的无监督学习方法。它通过学习输入数据的潜在分布Latent Distribution生成与输入数据相似的新样本。VAE 可以用于数据生成、降维、异常检测等任务。 VAE 的关键思想是在传统的自编码器Autoencoder的基础上引入了变分推断Variational Inference和概率模型使得网络能够学习到数据的潜在分布而不仅仅是数据的映射。 VAE 的结构 编码器Encoder将输入数据映射到潜在空间的分布。不同于传统的自编码器直接将数据映射到一个固定的潜在向量VAE 通过输出潜在变量的均值和方差来描述一个概率分布这样潜在空间中的每个点都有一个概率分布。潜在空间Latent Space表示数据的潜在特征。在 VAE 中潜在空间的表示是一个分布而不是固定的值。通常采用正态分布来作为潜在空间的先验分布。解码器Decoder从潜在空间的样本中重构输入数据。解码器通过将潜在空间的点映射回数据空间来生成样本。 VAE 的目标函数 VAE 的目标是最大化变分下界Variational Lower Bound简称 ELBO即通过优化以下两部分的加权和 重构误差Reconstruction Loss衡量生成的数据和输入数据之间的差异通常使用均方误差MSE或交叉熵Cross-Entropy。KL 散度KL Divergence衡量潜在空间的分布与先验分布通常是标准正态分布之间的差异。 其最终的目标是使生成的数据尽可能接近真实数据同时使潜在空间的分布接近先验分布。 优点 VAE 能够生成具有多样性的样本尤其适用于图像、音频等数据的生成。潜在空间通常具有良好的结构可以进行插值、样本生成等操作。 应用 生成任务如图像生成、文本生成等。数据重构如去噪、自编码等。半监督学习VAE 可以结合有标签和无标签的数据进行训练提升模型的泛化能力。 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import Dataset, DataLoader import matplotlib.pyplot as plt# 生成圆形图像的函数使用PyTorch def generate_circle_image(size64):image torch.zeros((1, size, size)) # 使用 PyTorch 创建空白图像center size // 2radius size // 4for y in range(size):for x in range(size):if (x - center) ** 2 (y - center) ** 2 radius ** 2:image[0, y, x] 1 # 在圆内的点设置为白色return image# 生成方形图像的函数使用PyTorch def generate_square_image(size64):image torch.zeros((1, size, size)) # 使用 PyTorch 创建空白图像padding size // 4image[0, padding:size - padding, padding:size - padding] 1 # 设置方形区域为白色return image# 自定义数据集圆形和方形图像 class ShapeDataset(Dataset):def __init__(self, num_samples1000, size64):self.num_samples num_samplesself.size sizeself.data []# 生成数据一半是圆形图像一半是方形图像for i in range(num_samples // 2):self.data.append(generate_circle_image(size))self.data.append(generate_square_image(size))def __len__(self):return len(self.data)def __getitem__(self, idx):return self.data[idx].float() # 直接返回 PyTorch Tensor 格式的数据# VAE模型定义 class VAE(nn.Module):def __init__(self, latent_dim2):super(VAE, self).__init__()self.latent_dim latent_dim# 编码器self.fc1 nn.Linear(64 * 64, 400)self.fc21 nn.Linear(400, latent_dim) # 均值self.fc22 nn.Linear(400, latent_dim) # 方差# 解码器self.fc3 nn.Linear(latent_dim, 400)self.fc4 nn.Linear(400, 64 * 64)def encode(self, x):h1 torch.relu(self.fc1(x.view(-1, 64 * 64)))return self.fc21(h1), self.fc22(h1) # 返回均值和方差def reparameterize(self, mu, logvar):std torch.exp(0.5 * logvar)eps torch.randn_like(std)return mu eps * stddef decode(self, z):h3 torch.relu(self.fc3(z))return torch.sigmoid(self.fc4(h3)).view(-1, 1, 64, 64) # 重构图像def forward(self, x):mu, logvar self.encode(x)z self.reparameterize(mu, logvar)return self.decode(z), mu, logvar# 损失函数重构误差 KL 散度 def loss_function(recon_x, x, mu, logvar):BCE nn.functional.binary_cross_entropy(recon_x.view(-1, 64 * 64), x.view(-1, 64 * 64), reductionsum)# KL 散度return BCE 0.5 * torch.sum(torch.exp(logvar) mu ** 2 - 1 - logvar)# 设置超参数 batch_size 128 epochs 10 latent_dim 2 learning_rate 1e-3# 数据加载 train_loader DataLoader(ShapeDataset(num_samples2000), batch_sizebatch_size, shuffleTrue)# 创建模型和优化器 device torch.device(cuda if torch.cuda.is_available() else cpu) model VAE(latent_dim).to(device) optimizer optim.Adam(model.parameters(), lrlearning_rate)# 训练模型 def train(epoch):model.train()train_loss 0for batch_idx, data in enumerate(train_loader):data data.to(device)optimizer.zero_grad()recon_batch, mu, logvar model(data)loss loss_function(recon_batch, data, mu, logvar)loss.backward()train_loss loss.item()optimizer.step()if batch_idx % 100 0:print(fTrain Epoch: {epoch} [{batch_idx * len(data)}/{len(train_loader.dataset)}] Loss: {loss.item() / len(data):.6f})print(fTrain Epoch: {epoch} Average loss: {train_loss / len(train_loader.dataset):.4f})# 测试并显示一些真实图像和生成的图像 def test():model.eval()with torch.no_grad():# 获取一批真实的图像原始图像real_images next(iter(train_loader))[:64] # 只取前64个图像real_images real_images.cpu().numpy()# 从潜在空间随机生成一些样本sample torch.randn(64, latent_dim).to(device)generated_images model.decode(sample).cpu().numpy()# 显示真实图像和生成的图像分别标明fig, axes plt.subplots(8, 8, figsize(8, 8))axes axes.flatten()for i in range(64):if i 32: # 前32个显示真实图像axes[i].imshow(real_images[i].squeeze(), cmapgray)axes[i].set_title(Real, fontsize8)else: # 后32个显示生成图像axes[i].imshow(generated_images[i - 32].squeeze(), cmapgray)axes[i].set_title(Generated, fontsize8)axes[i].axis(off)plt.tight_layout()plt.show()# 训练模型 for epoch in range(1, epochs 1):train(epoch)# 训练完成后显示生成的图像 test()解释 真实图像 (real_images)我们通过 next(iter(train_loader)) 获取一批真实图像并将其转换为 NumPy 数组以便 matplotlib 显示。生成图像 (generated_images)通过模型生成的图像使用 decode() 方法生成潜在空间的样本。图像展示前 32 张图像展示真实图像后 32 张图像展示生成的图像。每个图像上方都有 Real 或 Generated 标注。 结果 前32个图像显示真实图像并标注为 Real。后32个图像显示通过训练后的 VAE 生成的图像并标注为 Generated。
http://www.ho-use.cn/article/10823606.html

相关文章:

  • 凡科能上传自己做的网站代运营电商公司
  • 胖哥食品网站建设规范意见上海发布公众号下载安装
  • 网站建设的实施方式关于做网站公司周年大促销
  • 零食网站色调搭配怎麽做wordpress在线生成二维码
  • 怒江北京网站建设网站怎么申请官网
  • 网站开发实验室建设方案德阳网站建设ghxhwl
  • 色91Av做爰网站怎么进wordpress
  • wordpress仿小米主题江门网站建设优化
  • 海淀做网站的网络公司网站建设开票分类编码
  • 网站优化人员如何自己制作二维码
  • 做的比较好的p2p网站如何在wordpress中加备案编号
  • 网站建设目的与作用切片工具做网站怎么做
  • 建设网站平台的章程wordpress 机制
  • 手机可以访问的网站怎么做wordpress drupal 插件
  • 晋州建设规划局网站中小网站建设都有哪些方案
  • 上海建设工程安全监理网站重庆网站制作定制
  • 微信小程序开发和网站开发的区别兰州装饰公司十强
  • discuz论坛建站教程资金盘网站开发价格
  • 网站放到服务器襄樊seo
  • 洛阳制作网站的公司吗公司网站建设一定要求原图吗
  • 第二次全国地名普查网站建设宿州网站建设贰聚思诚信
  • 企业网站建设基本思路私人衣橱网站建设
  • 餐饮vi设计网站上海网站建设 迈若
  • 新建网站霞山手机网站建设公司
  • 廊坊网站排名优化公司织梦末班和dw建设网站哪个方便优化
  • h5 技术做健康类网站为企业做一个网站多少钱
  • 建设厅官方网站河南国内外c2c网站有哪些
  • 做泥软件下载官方网站户型单页设计
  • 网站建设找谁好php 怎么做 网站 图片
  • 临沂做网站费用创意营销策划方案