国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

變分自編碼器生成新的手寫數(shù)字圖像

這篇具有很好參考價(jià)值的文章主要介紹了變分自編碼器生成新的手寫數(shù)字圖像。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

變分自編碼器(Variational Autoencoder,VAE)是一種生成模型,通常用于學(xué)習(xí)數(shù)據(jù)的潛在表示,并用于生成新的數(shù)據(jù)樣本。它由兩部分組成:編碼器和解碼器。

  1. 編碼器(Encoder):接收輸入數(shù)據(jù),并將其映射到潛在空間中的分布。這意味著編碼器將數(shù)據(jù)轉(zhuǎn)換為均值和方差參數(shù)的分布,通常假設(shè)為高斯分布。

  2. 解碼器(Decoder):接收來自編碼器的潛在表示,并將其映射回原始數(shù)據(jù)空間。解碼器嘗試從潛在空間中的樣本中生成與輸入數(shù)據(jù)盡可能接近的重建數(shù)據(jù)。

VAE的目標(biāo)是學(xué)習(xí)一個(gè)能夠生成與訓(xùn)練數(shù)據(jù)類似的數(shù)據(jù)分布。為了實(shí)現(xiàn)這一點(diǎn),VAE采用了一種被稱為變分推斷的方法,其中引入了一個(gè)額外的損失項(xiàng),即KL散度,用于度量生成的潛在分布與預(yù)先設(shè)定的先驗(yàn)分布之間的差異。

VAE將經(jīng)過神經(jīng)網(wǎng)絡(luò)編碼后的隱藏層假設(shè)為一個(gè)標(biāo)準(zhǔn)的高斯分布,然后再?gòu)倪@個(gè)分布中采樣一個(gè)特征,再用這個(gè)特征進(jìn)行解碼,期望得到與原始輸入相同的結(jié)果,損失和AE幾乎一樣,只是增加編碼推斷分布與標(biāo)準(zhǔn)高斯分布的KL散度的正則項(xiàng),顯然增加這個(gè)正則項(xiàng)的目的就是防止模型退化成普通的AE,因?yàn)榫W(wǎng)絡(luò)訓(xùn)練時(shí)為了盡量減小重構(gòu)誤差,必然使得方差逐漸被降到0,這樣便不再會(huì)有隨機(jī)采樣噪聲,也就變成了普通的AE。

變分自編碼器生成新的手寫數(shù)字圖像,人工智能,機(jī)器學(xué)習(xí),算法

舉例來說,假設(shè)我們有一組手寫數(shù)字的圖像作為輸入數(shù)據(jù)。我們可以使用VAE來學(xué)習(xí)手寫數(shù)字的潛在表示,并用此表示來生成新的手寫數(shù)字圖像。編碼器將輸入圖像轉(zhuǎn)換為潛在空間中的分布,解碼器則將從該分布中采樣的樣本映射回原始圖像空間。通過訓(xùn)練編碼器和解碼器,VAE可以生成與訓(xùn)練數(shù)據(jù)類似的手寫數(shù)字圖像,同時(shí)學(xué)習(xí)數(shù)據(jù)的潛在結(jié)構(gòu)。

以下是使用 PyTorch 實(shí)現(xiàn)的簡(jiǎn)單示例代碼,演示了如何使用變分自編碼器(VAE)學(xué)習(xí)手寫數(shù)字的潛在表示,并用此表示來生成新的手寫數(shù)字圖像:

import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
from torchvision.datasets import MNIST
import numpy as np
import matplotlib.pyplot as plt

# 定義變分自編碼器模型
class VAE(nn.Module):
    def __init__(self, input_dim, latent_dim):
        super(VAE, self).__init__()
        
        # 編碼器部分
        self.encoder = nn.Sequential(
            nn.Linear(input_dim, 512),
            nn.ReLU(),
            nn.Linear(512, 256),
            nn.ReLU(),
            nn.Linear(256, latent_dim * 2)  # 輸出均值和方差參數(shù)
        )
        
        # 解碼器部分
        self.decoder = nn.Sequential(
            nn.Linear(latent_dim, 256),
            nn.ReLU(),
            nn.Linear(256, 512),
            nn.ReLU(),
            nn.Linear(512, input_dim),
            nn.Sigmoid()  # 輸出范圍在 0 到 1 之間
        )
    
    def reparameterize(self, mu, logvar):
        std = torch.exp(0.5 * logvar)
        eps = torch.randn_like(std)
        return mu + eps * std
    
    def forward(self, x):
        # 編碼
        z_mu_logvar = self.encoder(x)
        mu, logvar = torch.chunk(z_mu_logvar, 2, dim=1)
        
        # 重參數(shù)化
        z = self.reparameterize(mu, logvar)
        
        # 解碼
        x_recon = self.decoder(z)
        
        return x_recon, mu, logvar

# 計(jì)算重構(gòu)損失和 KL 散度
def loss_function(x_recon, x, mu, logvar):
    recon_loss = nn.BCELoss(reduction='sum')(x_recon, x)  # 二進(jìn)制交叉熵?fù)p失
    kl_divergence = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())
    return recon_loss + kl_divergence

# 數(shù)據(jù)預(yù)處理
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Lambda(lambda x: x.view(-1))  # 將圖像展平成向量
])

# 加載 MNIST 數(shù)據(jù)集
train_dataset = MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=128, shuffle=True)

# 初始化模型和優(yōu)化器
latent_dim = 20
input_dim = 784  # 28x28
model = VAE(input_dim, latent_dim)
optimizer = optim.Adam(model.parameters(), lr=1e-3)

# 訓(xùn)練模型
num_epochs = 20
for epoch in range(num_epochs):
    total_loss = 0
    for batch_idx, (x, _) in enumerate(train_loader):
        optimizer.zero_grad()
        x_recon, mu, logvar = model(x)
        loss = loss_function(x_recon, x, mu, logvar)
        loss.backward()
        optimizer.step()
        total_loss += loss.item()
    
    print(f"Epoch {epoch+1}, Loss: {total_loss / len(train_loader.dataset)}")

# 使用訓(xùn)練好的模型生成新的手寫數(shù)字圖像
with torch.no_grad():
    z = torch.randn(10, latent_dim)  # 生成 10 個(gè)隨機(jī)潛在向量
    generated_images = model.decoder(z)
    generated_images = generated_images.view(-1, 1, 28, 28)  # 將向量轉(zhuǎn)換成圖像形狀

# 可視化生成的圖像
fig, axes = plt.subplots(1, 10, figsize=(10, 1))
for i, ax in enumerate(axes):
    ax.imshow(generated_images[i][0], cmap='gray')
    ax.axis('off')
plt.show()

這段代碼首先定義了一個(gè)簡(jiǎn)單的變分自編碼器模型,然后使用 MNIST 數(shù)據(jù)集訓(xùn)練該模型,最后使用訓(xùn)練好的模型生成新的手寫數(shù)字圖像。

參考?【PyTorch】變分自編碼器/Variational Autoencoder(VAE)_variantautoencoder(vae)pytorch-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-847116.html

到了這里,關(guān)于變分自編碼器生成新的手寫數(shù)字圖像的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 變分自編碼器(VAE)公式推導(dǎo)

    論文原文:Auto-Encoding Variational Bayes [OpenReview (ICLR 2014) | arXiv] 本文記錄了我在學(xué)習(xí) VAE 過程中的一些公式推導(dǎo)和思考。如果你希望從頭開始學(xué)習(xí) VAE,建議先看一下蘇劍林的博客(本文末尾有鏈接)。 VAE 認(rèn)為,隨機(jī)變量 (boldsymbol{x} sim p(boldsymbol{x})) 由兩個(gè)隨機(jī)過程得到: 根

    2024年02月11日
    瀏覽(23)
  • 一分鐘理解VAE(變分自編碼器)

    VAE代表變分自編碼器(Variational Autoencoder),是一種生成模型,它可以從輸入數(shù)據(jù)中學(xué)習(xí)潛在變量,并生成新的樣本。 VAE的輸入和輸出都是連續(xù)向量。輸入通常是圖像、文本或聲音等數(shù)據(jù)類型,輸出可以是相同類型的數(shù)據(jù),也可以是新的數(shù)據(jù)樣本。 Variational Autoencoder (VAE) 可以

    2024年02月15日
    瀏覽(24)
  • 變分自編碼器(Variational AutoEncoder,VAE)

    變分自編碼器(Variational AutoEncoder,VAE)

    說到編碼器這塊,不可避免地要講起 AE (AutoEncoder)自編碼器。它的結(jié)構(gòu)下圖所示: 據(jù)圖可知,AE通過自監(jiān)督的訓(xùn)練方式,能夠?qū)⑤斎氲脑继卣魍ㄟ^編碼encoder后得到潛在的特征編碼,實(shí)現(xiàn)了自動(dòng)化的特征工程,并且達(dá)到了降維和泛化的目的。而后通過對(duì)進(jìn)行decoder后,我們

    2024年01月18日
    瀏覽(25)
  • 變分自編碼器(VAE)PyTorch Lightning 實(shí)現(xiàn)

    變分自編碼器(VAE)PyTorch Lightning 實(shí)現(xiàn)

    ?作者簡(jiǎn)介:人工智能專業(yè)本科在讀,喜歡計(jì)算機(jī)與編程,寫博客記錄自己的學(xué)習(xí)歷程。 ??個(gè)人主頁(yè):小嗷犬的個(gè)人主頁(yè) ??個(gè)人網(wǎng)站:小嗷犬的技術(shù)小站 ??個(gè)人信條:為天地立心,為生民立命,為往圣繼絕學(xué),為萬(wàn)世開太平。 變分自編碼器 (Variational Autoencoder,VAE)是一

    2024年02月21日
    瀏覽(19)
  • AIGC實(shí)戰(zhàn)——變分自編碼器(Variational Autoencoder, VAE)

    我們已經(jīng)學(xué)習(xí)了如何實(shí)現(xiàn)自編碼器,并了解了自編碼器無(wú)法在潛空間中的空白位置處生成逼真的圖像,且空間分布并不均勻,為了解決這些問題#

    2024年02月05日
    瀏覽(22)
  • 理解 Stable Diffusion、模型檢查點(diǎn)(ckpt)和變分自編碼器(VAE)

    ? ? ? ? 在探索深度學(xué)習(xí)和人工智能領(lǐng)域的旅途中,理解Stable Diffusion、模型檢查點(diǎn)(ckpt)以及變分自編碼器(VAE)之間的關(guān)系至關(guān)重要。這些組件共同構(gòu)成了當(dāng)下一些最先進(jìn)圖像生成系統(tǒng)的基礎(chǔ)。本文將為初學(xué)者提供一個(gè)詳細(xì)的概述,幫助您理解這些概念以及它們是如何協(xié)同工作

    2024年01月21日
    瀏覽(27)
  • AI繪畫——Stable Diffusion模型,變分自編碼器(VAE)模型 , lora模型——調(diào)配設(shè)置與分享

    AI繪畫——Stable Diffusion模型,變分自編碼器(VAE)模型 , lora模型——調(diào)配設(shè)置與分享

    目錄 Stable Diffusion模型 模型調(diào)配 模型設(shè)置? 變分自編碼器(VAE)模型? 模型調(diào)配 模型設(shè)置? ?lora模型(原生)(插件) 模型調(diào)配 模型設(shè)置? ?AI生成prompt及模型分享 Stable Diffusion模型?pastel-mix+對(duì)應(yīng)的VAE ?Stable Diffusion模型國(guó)風(fēng)+Lora模型 墨心+疏可走馬 Stable Diffusion模型國(guó)風(fēng)+Lo

    2024年02月04日
    瀏覽(22)
  • AE(自動(dòng)編碼器)與VAE(變分自動(dòng)編碼器)的區(qū)別和聯(lián)系?

    AE(自動(dòng)編碼器)與VAE(變分自動(dòng)編碼器)的區(qū)別和聯(lián)系?

    他們各自的概念看以下鏈接就可以了:https://blog.csdn.net/weixin_43135178/category_11543123.html ?這里主要談一下他們的區(qū)別? VAE是AE的升級(jí)版,VAE也可以被看作是一種特殊的AE AE主要用于數(shù)據(jù)的 壓縮與還原 ,VAE主要用于 生成 。 AE是將數(shù)據(jù)映直接映射為數(shù)值 code(確定的數(shù)值) ,而

    2024年02月03日
    瀏覽(164)
  • 在 CelebA 數(shù)據(jù)集上訓(xùn)練的 PyTorch 中的基本變分自動(dòng)編碼器

    在 CelebA 數(shù)據(jù)集上訓(xùn)練的 PyTorch 中的基本變分自動(dòng)編碼器

    摩西·西珀博士 ????????我最近發(fā)現(xiàn)自己需要一種方法將圖像 編碼到潛在嵌入中, 調(diào)整 嵌入,然后 生成 新圖像。有一些強(qiáng)大的方法可以創(chuàng)建嵌入 或 從嵌入生成。如果你想同時(shí)做到這兩點(diǎn),一種自然且相當(dāng)簡(jiǎn)單的方法是使用變分自動(dòng)編碼器。

    2024年02月05日
    瀏覽(18)
  • 【深度學(xué)習(xí)】采用自動(dòng)編碼器生成新圖像

    【深度學(xué)習(xí)】采用自動(dòng)編碼器生成新圖像

    ????????你知道什么會(huì)很酷嗎?如果我們不需要所有這些標(biāo)記的數(shù)據(jù)來訓(xùn)練 我們的模型。我的意思是標(biāo)記和分類數(shù)據(jù)需要太多的工作。 不幸的是,大多數(shù)現(xiàn)有模型從支持向量機(jī)到卷積神經(jīng)網(wǎng),沒有它們,卷積神經(jīng)網(wǎng)絡(luò)就無(wú)法訓(xùn)練。無(wú)監(jiān)督學(xué)習(xí)不需要標(biāo)注。無(wú)監(jiān)督學(xué)習(xí)從未

    2024年02月13日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包