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

网站设计实验报告内容与步骤滨州seo排名

网站设计实验报告内容与步骤,滨州seo排名,大智慧手机版官方下载,桂林人生活论坛PyTorch深度学习实战#xff08;25#xff09;——自编码器 0. 前言1. 自编码器2. 使用 PyTorch 实现自编码器小结系列链接 0. 前言 自编码器 (Autoencoder) 是一种无监督学习的神经网络模型#xff0c;用于数据的特征提取和降维#xff0c;它由一个编码器 (Encoder) 和一… PyTorch深度学习实战25——自编码器 0. 前言1. 自编码器2. 使用 PyTorch 实现自编码器小结系列链接 0. 前言 自编码器 (Autoencoder) 是一种无监督学习的神经网络模型用于数据的特征提取和降维它由一个编码器 (Encoder) 和一个解码器 (Decoder) 组成通过将输入数据压缩到低维表示然后再重构出原始数据。在本节中我们将学习如何使用自编码器以在低维空间表示图像学习以较少的维度表示图像有助于修改图像可以利用低维表示来生成新图像。 1. 自编码器 我们已经学习了通过输入图像及其相应标签训练模型来对图像进行分类进行分类的前提是是拥有带有类别标签的数据集。假设数据集中没有图像对应的标签如果需要根据图像的相似性对图像进行聚类在这种情况下自编码器可以方便地识别和分组相似的图像。 自动编码器将图像作为输入将其存储在低维空间中并尝试通过解码过程输出相同图像而不使用其他标签因此 AutoEncoder 中的 Auto 表示能够再现输入。但是如果我们只需要简单的在输出中重现输入就不需要神经网络了只需要将输入简单地原样输出即可。自编码器的作用在于它能够以较低维度对图像信息进行编码因此称为编码器(将图像信息编码至较低维空间中)因此相似的图像具有相似的编码。此外解码器致力于根据编码矢量重建原始图像以尽可能重现输入图像 假设模型输入图像是 MNIST 手写数字图像模型输出图像与输入图像相同。最中间的网络层是编码层也称瓶颈层 (bottleneck layer)输入和瓶颈层之间发生的操作表示编码器瓶颈层和输出之间的操作表示解码器。 通过瓶颈层我们可以在低维空间中表示图像也可以重建原始图像换句话说利用自编码器中的瓶颈层能够解决识别相似图像以及生成新图像的问题具体而言 具有相似瓶颈层值(编码表示也称潜编码)的图像可能彼此相似通过改变瓶颈层的节点值可以改变输出图像。 2. 使用 PyTorch 实现自编码器 本节中使用 PyTorch 构建自编码器我们使用 MNIST 数据集训练此网络MNIST 数据集中是一个手写数字的图像数据集包含了 6 万个 28x28 像素的训练样本和 1 万个测试样本。 (1) 导入相关库并定义设备 from torchvision.datasets import MNIST from torchvision import transforms from torch.utils.data import DataLoader, Dataset import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torchvision.utils import make_grid import numpy as np from matplotlib import pyplot as plt device cuda if torch.cuda.is_available() else cpu(2) 指定图像转换方法 img_transform transforms.Compose([transforms.ToTensor(),transforms.Normalize([0.5], [0.5]),transforms.Lambda(lambda x: x.to(device)) ])通过以上代码将图像转换为张量对其进行归一化然后将其传递到设备中。 (3) 创建训练和验证数据集 trn_ds MNIST(MNIST/, transformimg_transform, trainTrue, downloadTrue) val_ds MNIST(MNIST/, transformimg_transform, trainFalse, downloadTrue)(4) 定义数据加载器 batch_size 256 trn_dl DataLoader(trn_ds, batch_sizebatch_size, shuffleTrue) val_dl DataLoader(val_ds, batch_sizebatch_size, shuffleFalse)(5) 定义网络架构在 __init__ 方法中定义了使用编码器-解码器架构的 AutoEncoder 类以及瓶颈层的维度latent_dim 和 forward 方法并打印模型摘要信息。 定义 AutoEncoder 类和包含编码器、解码器以及瓶颈层维度的 __init__ 方法 class AutoEncoder(nn.Module):def __init__(self, latent_dim):super().__init__()self.latend_dim latent_dimself.encoder nn.Sequential(nn.Linear(28 * 28, 128), nn.ReLU(True),nn.Linear(128, 64), nn.ReLU(True), #nn.Linear(64, 12), nn.ReLU(True), nn.Linear(64, latent_dim))self.decoder nn.Sequential(#nn.Linear(latent_dim, 12), nn.ReLU(True),nn.Linear(latent_dim, 64), nn.ReLU(True),nn.Linear(64, 128), nn.ReLU(True), nn.Linear(128, 28 * 28), nn.Tanh())定义前向计算方法 forward def forward(self, x):x x.view(len(x), -1)x self.encoder(x)x self.decoder(x)x x.view(len(x), 1, 28, 28)return x打印模型摘要信息 from torchsummary import summary model AutoEncoder(3).to(device) print(summary(model, (1,28,28)))模型架构信息输出如下 ----------------------------------------------------------------Layer (type) Output Shape Param # Linear-1 [-1, 128] 100,480ReLU-2 [-1, 128] 0Linear-3 [-1, 64] 8,256ReLU-4 [-1, 64] 0Linear-5 [-1, 3] 195Linear-6 [-1, 64] 256ReLU-7 [-1, 64] 0Linear-8 [-1, 128] 8,320ReLU-9 [-1, 128] 0Linear-10 [-1, 784] 101,136Tanh-11 [-1, 784] 0Total params: 218,643 Trainable params: 218,643 Non-trainable params: 0 ---------------------------------------------------------------- Input size (MB): 0.00 Forward/backward pass size (MB): 0.02 Params size (MB): 0.83 Estimated Total Size (MB): 0.85 ----------------------------------------------------------------从前面的输出中可以看到 Linear: 2-5 层是瓶颈层将每张图像都表示为一个 3 维向量此外解码器使用瓶颈层中的 3 维向量重建原始图像。 (6) 定义函数在批数据上训练模型 train_batch() def train_batch(input, model, criterion, optimizer):model.train()optimizer.zero_grad()output model(input)loss criterion(output, input)loss.backward()optimizer.step()return loss(7) 定义在批数据上进行模型验证的函数 validate_batch() torch.no_grad() def validate_batch(input, model, criterion):model.eval()output model(input)loss criterion(output, input)return loss(8) 定义模型、损失函数和优化器 model AutoEncoder(3).to(device) criterion nn.MSELoss() optimizer torch.optim.AdamW(model.parameters(), lr0.001, weight_decay1e-5)(9) 训练模型 num_epochs 20 train_loss_epochs [] val_loss_epochs [] for epoch in range(num_epochs):N len(trn_dl)trn_loss []val_loss []for ix, (data, _) in enumerate(trn_dl):loss train_batch(data, model, criterion, optimizer)pos (epoch (ix1)/N)trn_loss.append(loss.item())train_loss_epochs.append(np.average(trn_loss))N len(val_dl)for ix, (data, _) in enumerate(val_dl):loss validate_batch(data, model, criterion)pos epoch (1ix)/Nval_loss.append(loss.item())val_loss_epochs.append(np.average(val_loss))(10) 可视化训练期间模型的训练和验证损失随时间的变化情况 epochs np.arange(num_epochs)1 plt.plot(epochs, train_loss_epochs, bo, labelTraining loss) plt.plot(epochs, val_loss_epochs, r-, labelTest loss) plt.title(Training and Test loss over increasing epochs) plt.xlabel(Epochs) plt.ylabel(Loss) plt.legend() plt.grid(off) plt.show()(11) 使用测试数据集 val_ds 验证模型 for _ in range(5):ix np.random.randint(len(val_ds))im, _ val_ds[ix]_im model(im[None])[0]plt.subplot(121)# fig, ax plt.subplots(1,2,figsize(3,3)) plt.imshow(im[0].detach().cpu(), cmapgray)plt.title(input)plt.subplot(122)plt.imshow(_im[0].detach().cpu(), cmapgray)plt.title(prediction) plt.show()我们可以看到即使瓶颈层只有三个维度网络也可以非常准确地重现输入但是图像并不像预期的那样清晰主要是因为瓶颈层中的节点数量过少。具有不同瓶颈层大小 (2、3、5、10 和 50) 的网络训练后可视化重建的图像如下所示 def train_aec(latent_dim):model AutoEncoder(latent_dim).to(device)criterion nn.MSELoss()optimizer torch.optim.AdamW(model.parameters(), lr0.001, weight_decay1e-5)num_epochs 20train_loss_epochs []val_loss_epochs []for epoch in range(num_epochs):N len(trn_dl)trn_loss []val_loss []for ix, (data, _) in enumerate(trn_dl):loss train_batch(data, model, criterion, optimizer)pos (epoch (ix1)/N)trn_loss.append(loss.item())train_loss_epochs.append(np.average(trn_loss))N len(val_dl)trn_loss []val_loss []for ix, (data, _) in enumerate(val_dl):loss validate_batch(data, model, criterion)pos epoch (1ix)/Nval_loss.append(loss.item())val_loss_epochs.append(np.average(val_loss))epochs np.arange(num_epochs)1plt.plot(epochs, train_loss_epochs, bo, labelTraining loss)plt.plot(epochs, val_loss_epochs, r-, labelTest loss)plt.title(Training and Test loss over increasing epochs)plt.xlabel(Epochs)plt.ylabel(Loss)plt.legend()plt.grid(off)plt.show()return modelaecs [train_aec(dim) for dim in [50, 2, 3, 5, 10]]for _ in range(10):ix np.random.randint(len(val_ds))im, _ val_ds[ix]plt.subplot(1, len(aecs)1, 1)plt.imshow(im[0].detach().cpu(), cmapgray)plt.title(input)idx 2for model in aecs:_im model(im[None])[0]plt.subplot(1, len(aecs)1, idx)plt.imshow(_im[0].detach().cpu(), cmapgray)plt.title(fprediction\nlatent-dim:{model.latend_dim})idx 1 plt.show()随着瓶颈层中向量维度的增加重建图像的清晰度逐渐提高。 小结 自编码器是一种无监督学习的神经网络模型用于数据的特征提取和降维。它由编码器和解码器组成通过将输入数据压缩到低维表示并尝试重构出原始数据来实现特征提取和数据的降维。自编码器的训练过程中目标是最小化输入数据与重构数据之间的重建误差以使编码器捕捉到数据的关键特征。自编码器在无监督学习和深度学习中扮演着重要的角色能够从数据中学习有用的特征并为后续的机器学习任务提供支持。 系列链接 PyTorch深度学习实战1——神经网络与模型训练过程详解 PyTorch深度学习实战2——PyTorch基础 PyTorch深度学习实战3——使用PyTorch构建神经网络 PyTorch深度学习实战4——常用激活函数和损失函数详解 PyTorch深度学习实战5——计算机视觉基础 PyTorch深度学习实战6——神经网络性能优化技术 PyTorch深度学习实战7——批大小对神经网络训练的影响 PyTorch深度学习实战8——批归一化 PyTorch深度学习实战9——学习率优化 PyTorch深度学习实战10——过拟合及其解决方法 PyTorch深度学习实战11——卷积神经网络 PyTorch深度学习实战12——数据增强 PyTorch深度学习实战13——可视化神经网络中间层输出 PyTorch深度学习实战14——类激活图 PyTorch深度学习实战15——迁移学习 PyTorch深度学习实战16——面部关键点检测 PyTorch深度学习实战17——多任务学习 PyTorch深度学习实战18——目标检测基础 PyTorch深度学习实战19——从零开始实现R-CNN目标检测 PyTorch深度学习实战20——从零开始实现Fast R-CNN目标检测 PyTorch深度学习实战21——从零开始实现Faster R-CNN目标检测 PyTorch深度学习实战22——从零开始实现YOLO目标检测 PyTorch深度学习实战23——使用U-Net架构进行图像分割 PyTorch深度学习实战24——从零开始实现Mask R-CNN实例分割
http://www.w-s-a.com/news/453461/

相关文章:

  • 重庆网站建设帝维科技网站做定向的作用
  • 网站建设工作室wp主题模板做污事网站
  • 网站建设 深圳 凡科重庆家居网站制作公司
  • 自己也可以免费轻松创建一个网站企业收录网站有什么用
  • 帮别人做网站违法导航网站开发工具
  • seo网站外包公司字画价格网站建设方案
  • 网站国内空间价格销售技巧
  • 广安建设企业网站qq互联网站备案号
  • 京东网站建设的要求vs2010做的网站
  • wordpress 新闻杂志主题佛山企业网站排名优化
  • 选服务好的网站建设金华市开发区人才网
  • 广州建站商城南阳高质量建设大城市网站
  • 网站建设合同封面模板做代炼的网站
  • 外贸网站建站要多少钱南昌优化排名推广
  • 做公司网站的尺寸一般是多大企业管理网站
  • 苏州网站设计公司兴田德润i简介做签证宾馆订单用啥网站
  • 网站页面设计工具做网站租空间
  • 做智能网站系统百度提交入口
  • 网站建设代理商电话网站规划和建设方案
  • 双桥区网站制作seo 首页
  • 电子商务网站建设前期准备wordpress域名指向二级目录
  • 汕头建站网站模板淮北做网站电话
  • 手机做logo用什么网站服务器安全防护
  • 课程分销的网站怎么做北京企业网站建设方案
  • 吴兴区建设局网站湖北企业网站建设
  • 网页与网站的区别是什么2023年8月份新冠
  • 唐山网站建设外包公司安卓手机怎么搭建网页
  • 国内做网站最大的公司计量检测网站平台建设方案
  • 重庆沛宣网站建设网页制作初学者
  • php网站漂浮广告代码网络营销跟网站推广有啥区别