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

文本文档做网站怎么加图片上海网站推广有哪些

文本文档做网站怎么加图片,上海网站推广有哪些,1688货源网一件代发什么意思,地产商网站建设PyTorch深度学习实战#xff08;26#xff09;——卷积自编码器 0. 前言1. 卷积自编码器2. 使用 t-SNE 对相似图像进行分组小结系列链接 0. 前言 我们已经学习了自编码器 (AutoEncoder) 的原理#xff0c;并使用 PyTorch 搭建了全连接自编码器#xff0c;但我们使用的数据… PyTorch深度学习实战26——卷积自编码器 0. 前言1. 卷积自编码器2. 使用 t-SNE 对相似图像进行分组小结系列链接 0. 前言 我们已经学习了自编码器 (AutoEncoder) 的原理并使用 PyTorch 搭建了全连接自编码器但我们使用的数据集较为简单每张图像只有一个通道(每张图像都为黑白图像)且图像相对较小 (28 x 28)。但在现实场景中图像数据通常为彩色图像( 3 个通道)且图像尺寸通常较大。在本节中我们将实现能够处理多维输入图像的卷积自编码器为了与普通自编码器进行对比同样使用 MNIST 数据集。 1. 卷积自编码器 与传统的全连接自编码器不同卷积自编码器 (Convolutional Autoencoder) 利用卷积层和池化层替代了全连接层以处理具有高维空间结构的图像数据。这样的设计使得卷积自编码器能够在较少的参数量下对输入数据进行降维和压缩同时保留重要的空间特征。卷积自编码器架构如下所示 从上图中可以看出输入图像被表示为瓶颈层中的潜空间变量用于重建图像。图像经过多次卷积(编码器)得到低维潜空间表示然后在解码器中将潜空间变量还原为原始尺寸使解码器的输出能够近似恢复原始输入。 本质上卷积自编码器在其网络中使用卷积、池化操作来代替原始自编码器的全连接操作并使用反卷积操作 (Conv2DTranspose) 对特征图进行上采样。了解卷积自编码器的原理后使用 PyTorch 实现此架构。 (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 cpuimg_transform transforms.Compose([transforms.ToTensor(),transforms.Normalize([0.5], [0.5]),transforms.Lambda(lambda x: x.to(device)) ])trn_ds MNIST(MNIST/, transformimg_transform, trainTrue, downloadTrue) val_ds MNIST(MNIST/, transformimg_transform, trainFalse, downloadTrue)batch_size 256 trn_dl DataLoader(trn_ds, batch_sizebatch_size, shuffleTrue) val_dl DataLoader(val_ds, batch_sizebatch_size, shuffleFalse)(2) 定义神经网络类 ConvAutoEncoder。 定义 __init__ 方法 class ConvAutoEncoder(nn.Module):def __init__(self):super().__init__()定义编码器架构 self.encoder nn.Sequential(nn.Conv2d(1, 32, 3, stride3, padding1), nn.ReLU(True),nn.MaxPool2d(2, stride2),nn.Conv2d(32, 64, 3, stride2, padding1), nn.ReLU(True),nn.MaxPool2d(2, stride1))在以上代码中通道数最初由 1 开始逐渐增加到 64同时通过 nn.MaxPool2d 和 nn.Conv2d 操作减小输入图像尺寸。 定义解码器架构 self.decoder nn.Sequential(nn.ConvTranspose2d(64, 32, 3, stride2), nn.ReLU(True),nn.ConvTranspose2d(32, 16, 5, stride3, padding1), nn.ReLU(True),nn.ConvTranspose2d(16, 1, 2, stride2, padding1), nn.Tanh())定义前向传播方法 forward def forward(self, x):x self.encoder(x)x self.decoder(x)return x(3) 使用 summary 方法获取模型摘要信息 model ConvAutoEncoder().to(device) from torchsummary import summary summary(model, (1,28,28)) 输出结果如下所示 shell ----------------------------------------------------------------Layer (type) Output Shape Param # Conv2d-1 [-1, 32, 10, 10] 320ReLU-2 [-1, 32, 10, 10] 0MaxPool2d-3 [-1, 32, 5, 5] 0Conv2d-4 [-1, 64, 3, 3] 18,496ReLU-5 [-1, 64, 3, 3] 0MaxPool2d-6 [-1, 64, 2, 2] 0ConvTranspose2d-7 [-1, 32, 5, 5] 18,464ReLU-8 [-1, 32, 5, 5] 0ConvTranspose2d-9 [-1, 16, 15, 15] 12,816ReLU-10 [-1, 16, 15, 15] 0ConvTranspose2d-11 [-1, 1, 28, 28] 65Tanh-12 [-1, 1, 28, 28] 0Total params: 50,161 Trainable params: 50,161 Non-trainable params: 0 ---------------------------------------------------------------- Input size (MB): 0.00 Forward/backward pass size (MB): 0.14 Params size (MB): 0.19 Estimated Total Size (MB): 0.34 ----------------------------------------------------------------从以上模型架构信息可以看出使用尺寸为 batch size x 64 x 2 x 2 的 MaxPool2d-6 层作为瓶颈层。 模型训练过程训练和验证损失随时间的变化以及对输入图像的重建结果如下 def train_batch(input, model, criterion, optimizer):model.train()optimizer.zero_grad()output model(input)loss criterion(output, input)loss.backward()optimizer.step()return losstorch.no_grad() def validate_batch(input, model, criterion):model.eval()output model(input)loss criterion(output, input)return lossmodel ConvAutoEncoder().to(device) criterion nn.MSELoss() optimizer torch.optim.AdamW(model.parameters(), lr0.001, weight_decay1e-5)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))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()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. 使用 t-SNE 对相似图像进行分组 假设相似的图像具有相似的潜变量(也称嵌入)而不相似的图像具有不同的潜变量使用自编码器可以在低维空间中表示图像。接下来我们继续学习图像的相似度度量在二维空间中绘制潜变量使用 t-SNE 技术将卷积自编码器的 64 维向量缩减至到 2 维空间。 在 2 维空间中我们可以方便的可视化潜变量以观察相似图像是否具有相似的潜变量相似图像在二维平面中应该聚集在一起。接下里我们在二维平面中表示所有测试图像的潜变量。 (1) 初始化列表以便存储潜变量 (latent_vectors) 和相应的图像类别(存储每个图像的类别只是为了验证同一类别的图像是否具有较高的相似性并不会在训练过程使用) latent_vectors [] classes [](2) 遍历验证数据加载器 (val_dl) 中的图像并存储编码器的输出 (model.encoder(im).view(len(im),-1)) 和每个图像 (im) 对应的类别 (clss) for im,clss in val_dl:latent_vectors.append(model.encoder(im).view(len(im),-1))classes.extend(clss)(3) 连接潜变量 (latent_vectors) NumPy 数组 latent_vectors torch.cat(latent_vectors).cpu().detach().numpy()(4) 导入 t-SNE 库 (TSNE)并将潜变量转换为二维向量 (TSNE(2)) 以便进行绘制 from sklearn.manifold import TSNE tsne TSNE(2)(5) 通过在图像潜变量 (latent_vectors) 上运行 fit_transform 方法来拟合 t-SNE clustered tsne.fit_transform(latent_vectors)(6) 拟合 t-SNE 后绘制数据点 fig plt.figure(figsize(12,10)) cmap plt.get_cmap(Spectral, 10) plt.scatter(*zip(*clustered), cclasses, cmapcmap) plt.colorbar(drawedgesTrue) plt.show()可以看到同一类别的图像能够聚集在一起即相似的图像将具有相似的潜变量值。 小结 卷积自编码器是一种基于卷积神经网络结构的自编码器适用于处理图像数据。卷积自编码器在图像处理领域有广泛的应用包括图像去噪、图像压缩、图像生成等任务。通过训练卷积自编码器可以提取出输入图像的关键特征并实现对图像数据的降维和压缩同时保留重要的空间信息。在本节中我们介绍了卷积自编码器的模型架构使用 PyTorch 从零开始实现在 MNIST 数据集上训练了一个简单的卷积自编码器并使用 t-SNE 技术在二维平面中表示了所有测试图像的潜变量。 系列链接 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实例分割 PyTorch深度学习实战25——自编码器(Autoencoder)
http://wiki.neutronadmin.com/news/31071/

相关文章:

  • 网站不备案不能用吗国家建设部网站倪虹
  • 网站术语asp网站源码使用
  • 彩票网站可以做哪些活动手机视频网站建站
  • 互联网营销常用网站做擦边球视频网站
  • 沧州最新消息上海SEO网站优化推广公司
  • 网站平台建立学校网站建设目的
  • 做网站的ui免费网站建站有哪些
  • h5网站建设图标宁波企业网站设计
  • win7 iis asp网站配置文件萍乡手机网站建设
  • 网站建设与管理试题及答案1m带宽做网站快不
  • ICP备案域名网站wordpress插件tag
  • 怎样改网站英文域名html代码 wordpress
  • 徐州网站建设开发网站方案设计与论证
  • 网站建设需不需要招标高安网站建设公司
  • 网站开发者兼容模式出错文章网站模板哪个好
  • 从0开始做网站本地拖拽网站建设
  • 论坛网站开发成本室内设计师资格证书
  • 国内空间没备案可以打开网站吗展厅公司
  • 相城做网站的公司最新百度关键词排名
  • it教育网站建设如何修改wordpress站
  • 小程序是什么原理成都搜狗seo
  • 设计师网站兼职长沙网站制作公司
  • 云南建设人力资源网站南京网站建设服务
  • 网站黑色代码安徽省住房和建设执业资格注册中心网站
  • 网站建设方案主要有工作总结ppt模板免费下载
  • 在线做家装设计的网站保利威视 wordpress
  • 网站做好了怎样推广建站之星官网登陆
  • 网站运营实训报告总结郴州建设网站的公司
  • 菜鸟网站建设安徽网站建设优化推广
  • 洛阳网站设计建e室内设计网画图