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

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

0

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

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

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

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

Building Autoencoder in Pytorch

作者 | Vipul Vaibhaw

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

校對(duì) | 鄧普斯?杰弗        整理 | 菠蘿妹

原文鏈接:

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


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

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

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

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

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

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

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)在我們?cè)O(shè)置下載CIFAR-10數(shù)據(jù)集并將其轉(zhuǎn)換應(yīng)用于它。

我們對(duì)數(shù)據(jù)集應(yīng)用了兩個(gè)轉(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() - 使用均值和標(biāo)準(zhǔn)差對(duì)張量圖像進(jìn)行標(biāo)準(zhǔn)化。

基本上在應(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)在下一步是編寫自動(dòng)編碼類。

# 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í)候設(shè)置訓(xùn)練模型了。我們調(diào)用模型并將其配置為在 cpu 上運(yùn)行。如果你有一個(gè) gpu,你可以使用 cuda。 

我們使用 Mean Squared Error 作為損失函數(shù)。對(duì)于優(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]))

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

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


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

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

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


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

命名實(shí)體識(shí)別(NER)綜述

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

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

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


等你來(lái)譯:

深度學(xué)習(xí)目標(biāo)檢測(cè)算法綜述

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

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

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


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

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

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

知情人士

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