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

呼伦贝尔网站建设维护农机局网站建设总结

呼伦贝尔网站建设维护,农机局网站建设总结,新乡做网站的公司有那些,百度搜索引擎官网入口自编码说白了就是一个特征提取器,也可以看作是一个降维器。下面找了一张很丑的图来说明自编码的过程。 自编码分为压缩和解码两个过程。从图中可以看出来,压缩过程就是将一组数据特征进行提取, 得到更深层次的特征。解码的过程就是利用之前的…

自编码说白了就是一个特征提取器,也可以看作是一个降维器。下面找了一张很丑的图来说明自编码的过程。

自编码分为压缩和解码两个过程。从图中可以看出来,压缩过程就是将一组数据特征进行提取, 得到更深层次的特征。解码的过程就是利用之前的深层次特征再还原成为原来的数据特征。那么如何保证从压缩到解码两部分,原数据和解码数据保持一致呢?这就是要训练的过程。

如何理解降维?如果压缩的过程是卷积,维度可以根据核的个数变化,特征维度因此而改变。


import os
import torch
import torch.nn as nn
import torch.nn.functional as F
import torchvision
from torchvision import transforms
from torchvision.utils import save_imagedevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')sample_dir = 'samples'
if not os.path.exists(sample_dir):os.makedirs(sample_dir)
image_size = 784
h_dim = 400
z_dim = 20
num_epochs = 15
batch_size = 128
learning_rate = 1e-3dataset = torchvision.datasets.MNIST(root='../../data',train=True,transform=transforms.ToTensor(),download=True)# Data loader
data_loader = torch.utils.data.DataLoader(dataset=dataset,batch_size=batch_size, shuffle=True)

模型搭建:这里搭建的是一个变分自编码,Variational Autoencoder

那么变分自编码是为了解决什么问题呢? ——- 其主要思想还是希望学习隐层变量,并将其用来表示原始数据,但是它加另一个条件, 即隐层变量能学习原始数据的分布, 并反过来生产一些和原始数据相似的数据(这有啥用?—-可用于图片修复,让图片按训练集的数据分布变化)。

变分自编码 (Variational Autoencoder) 为了让隐层抓住输入数据特性, 而不是简单的输出数据=输入数据,他在隐层中加入随机噪声(单位高斯噪声)(这个过程也叫reparametrize),以确保隐层能较好抽象输入数据特点。

代码中怎么做的呢?

1、编码过程中我们保存了第二层线性层的输出。其中第二层包含有fc2与fc3两部分,他们是并联的。

2、给隐藏层加入随机噪声,作为解码的输入

class VAE(nn.Module):def __init__(self, image_size=784, h_dim=400, z_dim=20):super(VAE, self).__init__()self.fc1 = nn.Linear(image_size, h_dim)self.fc2 = nn.Linear(h_dim, z_dim)self.fc3 = nn.Linear(h_dim, z_dim)self.fc4 = nn.Linear(z_dim, h_dim)self.fc5 = nn.Linear(h_dim, image_size)def encode(self, x):h = F.relu(self.fc1(x))return self.fc2(h), self.fc3(h)def reparameterize(self, mu, log_var):std = torch.exp(log_var/2)eps = torch.randn_like(std)return mu + eps * stddef decode(self, z):h = F.relu(self.fc4(z))return F.sigmoid(self.fc5(h))def forward(self, x):mu, log_var = self.encode(x)z = self.reparameterize(mu, log_var)x_reconst = self.decode(z)return x_reconst, mu, log_var

训练:由于训练中加入了噪声,所以损失值的结构也因此改变。一部分来源于解码内容核原内容的相似度,另一部分是kl_div,具体是什么意义需查看论文。

model = VAE().to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)# Start training
for epoch in range(num_epochs):for i, (x, _) in enumerate(data_loader):# Forward passx = x.to(device).view(-1, image_size)x_reconst, mu, log_var = model(x)# Compute reconstruction loss and kl divergence# For KL divergence, see Appendix B in VAE paper or http://yunjey47.tistory.com/43reconst_loss = F.binary_cross_entropy(x_reconst, x, size_average=False)kl_div = - 0.5 * torch.sum(1 + log_var - mu.pow(2) - log_var.exp())# Backprop and optimizeloss = reconst_loss + kl_divoptimizer.zero_grad()loss.backward()optimizer.step()if (i+1) % 10 == 0:print ("Epoch[{}/{}], Step [{}/{}], Reconst Loss: {:.4f}, KL Div: {:.4f}" .format(epoch+1, num_epochs, i+1, len(data_loader), reconst_loss.item(), kl_div.item()))with torch.no_grad():# Save the sampled imagesz = torch.randn(batch_size, z_dim).to(device)out = model.decode(z).view(-1, 1, 28, 28)save_image(out, os.path.join(sample_dir, 'sampled-{}.png'.format(epoch+1)))# Save the reconstructed imagesout, _, _ = model(x)x_concat = torch.cat([x.view(-1, 1, 28, 28), out.view(-1, 1, 28, 28)], dim=3)save_image(x_concat, os.path.join(sample_dir, 'reconst-{}.png'.format(epoch+1)))

模型训练完成了之后该如何使用这个模型呢?

model.decode()是一个解码的过程,我们给他一个随机的中间特征z就可以输出一个数字图片了。

z = torch.randn(1,z_dim).to(device)
out = model.decode(z)
plt.imshow(out.cpu().data.numpy().reshape(28,28),cmap='gray')
plt.show()

有了随机的一张图片之后,我们把他完整的放入模型中,生成了和输入相似的一张图片,也没看出来是修复了图像......

out,_,_ = model(out) 
plt.imshow(out.cpu().data.numpy().reshape(28,28),cmap='gray')
plt.show()

http://www.yayakq.cn/news/543812/

相关文章:

  • 网上找客户有哪些网站上海企业网上公示
  • 苏州公司网站开发沪佳装修官方电话
  • 付网站开发费计入什么科目哪里建网站便宜
  • 漳州建设局网站首页南阳网站推广外包
  • 专业做房地产网站建设著名的国外设计网站
  • 兰州网站在哪备案wordpress 缩略图模糊
  • 制作企业网站的公司win10可以自己做网站
  • 那个网站可以做域名跳转的网站做系统叫什么软件吗
  • 直接做的视频网站建立诊断的步骤
  • 江西住房城乡建设网站wordpress 经常打不开
  • 建设电器网站目的及功能定位做不规则几何图形的网站
  • 商务网站开发流程有三个阶段个人博客网站的设计与实现
  • 美容茌哪个网站做宣传好wordpress房产系统
  • 上海建设银行官网网站怎样做网站设计
  • 南京江宁做网站wordpress右边小工具
  • 做网站游戏推广赚钱海外房产网站建设
  • 如何看网站的流量wordpress 用户注册插件
  • 中国工商银行网站建设医院网站建设管理规范
  • 富阳做网站洛洛科技诸暨广川建设公司网站
  • 郑州网站建设方案优化济南网站建设策划方案
  • 重庆价格低建设网站公司视频网站做cpa
  • 网站系统开发方式北京网站备案域名
  • 域名对网站建设有什么影响吗带地板翻转的网站怎么做
  • 温州百度搜索网站排名网站开发公司哪家最专业
  • 大学文明校园网站建设方案网站反链一般怎么做
  • 网站建设写代码自己怎么创业设计彩票网站开发
  • 怎么建设课题网站设计本网站图片大全
  • 运动器材网站建设途牛网网站建设评价
  • 欧美网站建设排名建设通和天眼查网站
  • 做任务能赚钱的网站如何做响应式布局网站