丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

0

用Pytorch構(gòu)建一個自動解碼器

本文作者: AI研習(xí)社-譯站 2019-01-28 10:16
導(dǎo)語:”自編碼器是一種人工神經(jīng)網(wǎng)絡(luò),在無監(jiān)督學(xué)習(xí)中用于有效編碼。自編碼的目的是通過一組數(shù)據(jù)學(xué)習(xí)出一種特征(編碼),通常用于降維?!?

用Pytorch構(gòu)建一個自動解碼器

本文為 AI 研習(xí)社編譯的技術(shù)博客,原標題 :

Building Autoencoder in Pytorch

作者 | Vipul Vaibhaw

翻譯 | 鄧普斯?杰弗、醬番梨、向日魁

校對 | 鄧普斯?杰弗        整理 | 菠蘿妹

原文鏈接:

https://medium.com/@vaibhaw.vipul/building-autoencoder-in-pytorch-34052d1d280c


這篇文章中,我們將利用 CIFAR-10 數(shù)據(jù)集通過 Pytorch 構(gòu)建一個簡單的卷積自編碼器。

用Pytorch構(gòu)建一個自動解碼器

引用維基百科的定義,”自編碼器是一種人工神經(jīng)網(wǎng)絡(luò),在無監(jiān)督學(xué)習(xí)中用于有效編碼。自編碼的目的是通過一組數(shù)據(jù)學(xué)習(xí)出一種特征(編碼),通常用于降維?!?/p>

為了建立一個自編碼器,我們需要三件事:一個編碼函數(shù),一個解碼函數(shù),和一個衡量壓縮特征和解壓縮特征間信息損失的距離函數(shù)(也稱為損失函數(shù))。

如果我們要在 Pytorch 中編寫自動編碼器,我們需要有一個自動編碼器類,并且必須使用super()從父類繼承__init__。 

我們通過導(dǎo)入必要的 Pytorch 模塊開始編寫卷積自動編碼器。  

import torchimport torchvision as tvimport torchvision.transforms as transformsimport torch.nn as nnimport torch.nn.functional as Ffrom torch.autograd import Variablefrom torchvision.utils import save_image

現(xiàn)在我們設(shè)置下載CIFAR-10數(shù)據(jù)集并將其轉(zhuǎn)換應(yīng)用于它。

我們對數(shù)據(jù)集應(yīng)用了兩個轉(zhuǎn)換 - 

  1. ToTensor() - 它將 PIL圖像或者 [0,255]范圍內(nèi)的 numpy.ndarray(H x W x C)轉(zhuǎn)換成 Torch 。 [0.0,1.0]范圍內(nèi)的形狀 FloatTensor。

  2. Normalize() - 使用均值和標準差對張量圖像進行標準化。

基本上在應(yīng)用變換之后,我們得到(-2,2)范圍內(nèi)的值 。 

# Loading and Transforming datatransform = transforms.Compose([transforms.ToTensor(),  transforms.Normalize((0.4914, 0.4822, 0.4466), (0.247,            0.243, 0.261))])trainTransform  = tv.transforms.Compose([tv.transforms.ToTensor(), tv.transforms.Normalize((0.4914, 0.4822, 0.4466), (0.247, 0.243, 0.261))])trainset = tv.datasets.CIFAR10(root='./data',  train=True,download=True, transform=transform)dataloader = torch.utils.data.DataLoader(trainset, batch_size=32, shuffle=False, num_workers=4)testset = tv.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform)classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')testloader = torch.utils.data.DataLoader(testset, batch_size=4, shuffle=False, num_workers=2)

你可以在這里閱讀更多關(guān)于上述變換的內(nèi)容。 現(xiàn)在下一步是編寫自動編碼類。

# Writing our modelclass Autoencoder(nn.Module):    def __init__(self):        super(Autoencoder,self).__init__()                self.encoder = nn.Sequential(            nn.Conv2d(3, 6, kernel_size=5),            nn.ReLU(True),            nn.Conv2d(6,16,kernel_size=5),            nn.ReLU(True))        self.decoder = nn.Sequential(                         nn.ConvTranspose2d(16,6,kernel_size=5),            nn.ReLU(True),            nn.ConvTranspose2d(6,3,kernel_size=5),            nn.ReLU(True),            nn.Sigmoid())    def forward(self,x):        x = self.encoder(x)        x = self.decoder(x)        return x

卷積編碼器神經(jīng)網(wǎng)絡(luò)具有一些 Conv2d,并且我們有使用ReLU激活功能正在被使用。 現(xiàn)在我們定義一些參數(shù) -  

#defining some paramsnum_epochs = 5 #you can go for more epochs, I am using a macbatch_size = 128

然后是時候設(shè)置訓(xùn)練模型了。我們調(diào)用模型并將其配置為在 cpu 上運行。如果你有一個 gpu,你可以使用 cuda。 

我們使用 Mean Squared Error 作為損失函數(shù)。對于優(yōu)化器,我們使用 adam。

model = Autoencoder().cpu()distance = nn.MSELoss()optimizer = torch.optim.Adam(model.parameters(),weight_decay=1e-5)

讓咱們開始訓(xùn)練吧!

for epoch in range(num_epochs):    for data in dataloader:        img, _ = data        img = Variable(img).cpu()        # ===================forward=====================        output = model(img)        loss = distance(output, img)        # ===================backward====================        optimizer.zero_grad()        loss.backward()        optimizer.step()    # ===================log========================    print('epoch [{}/{}], loss:{:.4f}'.format(epoch+1, num_epochs, loss.data[0]))

這是我寫的一個簡單的博客,展示了如何在 Pytorch 中構(gòu)建自動編碼器。 但是,如果要在模型中包含 MaxPool2d(),請確保設(shè)置 return_indices = True,然后在解碼器中使用 MaxUnpool2d()圖層。  

持續(xù)的學(xué)習(xí)和分享,可以在 github,Stack Overflow,LinkedIn,或者 Twitter 上 Follow 我。 


想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻?

長按鏈接點擊打開或點擊【用Pytorch構(gòu)建一個自動解碼器】:

https://ai.yanxishe.com/page/TextTranslation/1284


AI研習(xí)社每日更新精彩內(nèi)容,觀看更多精彩內(nèi)容:雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)

命名實體識別(NER)綜述

杰出數(shù)據(jù)科學(xué)家的關(guān)鍵技能是什么?

初學(xué)者怎樣使用Keras進行遷移學(xué)習(xí)

如果你想學(xué)數(shù)據(jù)科學(xué),這 7 類資源千萬不能錯過


等你來譯:

深度學(xué)習(xí)目標檢測算法綜述

一文教你如何用PyTorch構(gòu)建 Faster RCNN

高級DQNs:利用深度強化學(xué)習(xí)玩吃豆人游戲

用于深度強化學(xué)習(xí)的結(jié)構(gòu)化控制網(wǎng)絡(luò) (ICML 論文講解)


雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

用Pytorch構(gòu)建一個自動解碼器

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學(xué)習(xí)知識的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說