欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > Pytorch實現(xiàn)全連接層的操作

Pytorch實現(xiàn)全連接層的操作

熱門標(biāo)簽:陜西金融外呼系統(tǒng) 唐山智能外呼系統(tǒng)一般多少錢 白銀外呼系統(tǒng) 公司電話機(jī)器人 激戰(zhàn)2地圖標(biāo)注 海南400電話如何申請 騰訊外呼線路 哈爾濱ai外呼系統(tǒng)定制 廣告地圖標(biāo)注app

全連接神經(jīng)網(wǎng)絡(luò)(FC)

全連接神經(jīng)網(wǎng)絡(luò)是一種最基本的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),英文為Full Connection,所以一般簡稱FC。

FC的準(zhǔn)則很簡單:神經(jīng)網(wǎng)絡(luò)中除輸入層之外的每個節(jié)點都和上一層的所有節(jié)點有連接。

以上一次的MNIST為例

import torch
import torch.utils.data
from torch import optim
from torchvision import datasets
from torchvision.transforms import transforms
import torch.nn.functional as F
batch_size = 200
learning_rate = 0.001
epochs = 20
train_loader = torch.utils.data.DataLoader(
    datasets.MNIST('mnistdata', train=True, download=False,
                   transform=transforms.Compose([
                       transforms.ToTensor(),
                       transforms.Normalize((0.1307,), (0.3081,))
                   ])),
    batch_size=batch_size, shuffle=True)
test_loader = torch.utils.data.DataLoader(
    datasets.MNIST('mnistdata', train=False, download=False,
                   transform=transforms.Compose([
                       transforms.ToTensor(),
                       transforms.Normalize((0.1307,), (0.3081,))
                   ])),
    batch_size=batch_size, shuffle=True)
w1, b1 = torch.randn(200, 784, requires_grad=True), torch.zeros(200, requires_grad=True)
w2, b2 = torch.randn(200, 200, requires_grad=True), torch.zeros(200, requires_grad=True)
w3, b3 = torch.randn(10, 200, requires_grad=True), torch.zeros(10, requires_grad=True)
torch.nn.init.kaiming_normal_(w1)
torch.nn.init.kaiming_normal_(w2)
torch.nn.init.kaiming_normal_(w3)
def forward(x):
    x = x@w1.t() + b1
    x = F.relu(x)
    x = x@w2.t() + b2
    x = F.relu(x)
    x = x@w3.t() + b3
    x = F.relu(x)
    return x
optimizer = optim.Adam([w1, b1, w2, b2, w3, b3], lr=learning_rate)
criteon = torch.nn.CrossEntropyLoss()
for epoch in range(epochs):
    for batch_idx, (data, target) in enumerate(train_loader):
        data = data.view(-1, 28*28)
        logits = forward(data)
        loss = criteon(logits, target)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        if batch_idx % 100 == 0:
            print('Train Epoch : {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
                epoch, batch_idx*len(data), len(train_loader.dataset),
                100.*batch_idx/len(train_loader), loss.item()
            ))
    test_loss = 0
    correct = 0
    for data, target in test_loader:
        data = data.view(-1, 28*28)
        logits = forward(data)
        test_loss += criteon(logits, target).item()
        pred = logits.data.max(1)[1]
        correct += pred.eq(target.data).sum()
    test_loss /= len(test_loader.dataset)
    print('\nTest set : Averge loss: {:.4f}, Accurancy: {}/{}({:.3f}%)'.format(
        test_loss, correct, len(test_loader.dataset),
        100.*correct/len(test_loader.dataset)
        ))

我們將每個w和b都進(jìn)行了定義,并且自己寫了一個forward函數(shù)。如果我們采用了全連接層,那么整個代碼也會更加簡介明了。

首先,我們定義自己的網(wǎng)絡(luò)結(jié)構(gòu)的類:

class MLP(nn.Module):
    def __init__(self):
        super(MLP, self).__init__()
        self.model = nn.Sequential(
            nn.Linear(784, 200),
            nn.LeakyReLU(inplace=True),
            nn.Linear(200, 200),
            nn.LeakyReLU(inplace=True),
            nn.Linear(200, 10),
            nn.LeakyReLU(inplace=True)
        )
    def forward(self, x):
        x = self.model(x)
        return x

它繼承于nn.Moudle,并且自己定義里整個網(wǎng)絡(luò)結(jié)構(gòu)。

其中inplace的作用是直接復(fù)用存儲空間,減少新開辟存儲空間。

除此之外,它可以直接進(jìn)行運算,不需要手動定義參數(shù)和寫出運算語句,更加簡便。

同時我們還可以發(fā)現(xiàn),它自動完成了初試化,不需要像之前一樣再手動寫一個初始化了。

區(qū)分nn.Relu和F.relu()

前者是一個類的接口,后者是一個函數(shù)式接口。

前者都是大寫的,并且調(diào)用的的時候需要先實例化才能使用,而后者是小寫的可以直接使用。

最重要的是后者的自由度更高,更適合做一些自己定義的操作。

完整代碼

import torch
import torch.utils.data
from torch import optim, nn
from torchvision import datasets
from torchvision.transforms import transforms
import torch.nn.functional as F
batch_size = 200
learning_rate = 0.001
epochs = 20
train_loader = torch.utils.data.DataLoader(
    datasets.MNIST('mnistdata', train=True, download=False,
                   transform=transforms.Compose([
                       transforms.ToTensor(),
                       transforms.Normalize((0.1307,), (0.3081,))
                   ])),
    batch_size=batch_size, shuffle=True)
test_loader = torch.utils.data.DataLoader(
    datasets.MNIST('mnistdata', train=False, download=False,
                   transform=transforms.Compose([
                       transforms.ToTensor(),
                       transforms.Normalize((0.1307,), (0.3081,))
                   ])),
    batch_size=batch_size, shuffle=True)
class MLP(nn.Module):
    def __init__(self):
        super(MLP, self).__init__()
        self.model = nn.Sequential(
            nn.Linear(784, 200),
            nn.LeakyReLU(inplace=True),
            nn.Linear(200, 200),
            nn.LeakyReLU(inplace=True),
            nn.Linear(200, 10),
            nn.LeakyReLU(inplace=True)
        )
    def forward(self, x):
        x = self.model(x)
        return x
device = torch.device('cuda:0')
net = MLP().to(device)
optimizer = optim.Adam(net.parameters(), lr=learning_rate)
criteon = nn.CrossEntropyLoss().to(device)
for epoch in range(epochs):
    for batch_idx, (data, target) in enumerate(train_loader):
        data = data.view(-1, 28*28)
        data, target = data.to(device), target.to(device)
        logits = net(data)
        loss = criteon(logits, target)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        if batch_idx % 100 == 0:
            print('Train Epoch : {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
                epoch, batch_idx*len(data), len(train_loader.dataset),
                100.*batch_idx/len(train_loader), loss.item()
            ))
    test_loss = 0
    correct = 0
    for data, target in test_loader:
        data = data.view(-1, 28*28)
        data, target = data.to(device), target.to(device)
        logits = net(data)
        test_loss += criteon(logits, target).item()
        pred = logits.data.max(1)[1]
        correct += pred.eq(target.data).sum()
    test_loss /= len(test_loader.dataset)
    print('\nTest set : Averge loss: {:.4f}, Accurancy: {}/{}({:.3f}%)'.format(
        test_loss, correct, len(test_loader.dataset),
        100.*correct/len(test_loader.dataset)
        ))

補(bǔ)充:pytorch 實現(xiàn)一個隱層的全連接神經(jīng)網(wǎng)絡(luò)

torch.nn 實現(xiàn) 模型的定義,網(wǎng)絡(luò)層的定義,損失函數(shù)的定義。

import torch
# N is batch size; D_in is input dimension;
# H is hidden dimension; D_out is output dimension.
N, D_in, H, D_out = 64, 1000, 100, 10
# Create random Tensors to hold inputs and outputs
x = torch.randn(N, D_in)
y = torch.randn(N, D_out)
# Use the nn package to define our model as a sequence of layers. nn.Sequential
# is a Module which contains other Modules, and applies them in sequence to
# produce its output. Each Linear Module computes output from input using a
# linear function, and holds internal Tensors for its weight and bias.
model = torch.nn.Sequential(
    torch.nn.Linear(D_in, H),
    torch.nn.ReLU(),
    torch.nn.Linear(H, D_out),
)
# The nn package also contains definitions of popular loss functions; in this
# case we will use Mean Squared Error (MSE) as our loss function.
loss_fn = torch.nn.MSELoss(reduction='sum')
learning_rate = 1e-4
for t in range(500):
    # Forward pass: compute predicted y by passing x to the model. Module objects
    # override the __call__ operator so you can call them like functions. When
    # doing so you pass a Tensor of input data to the Module and it produces
    # a Tensor of output data.
    y_pred = model(x)
    # Compute and print loss. We pass Tensors containing the predicted and true
    # values of y, and the loss function returns a Tensor containing the
    # loss.
    loss = loss_fn(y_pred, y)
    print(t, loss.item())
    # Zero the gradients before running the backward pass.
    model.zero_grad()
    # Backward pass: compute gradient of the loss with respect to all the learnable
    # parameters of the model. Internally, the parameters of each Module are stored
    # in Tensors with requires_grad=True, so this call will compute gradients for
    # all learnable parameters in the model.
    loss.backward()
    # Update the weights using gradient descent. Each parameter is a Tensor, so
    # we can access its gradients like we did before.
    with torch.no_grad():
        for param in model.parameters():
            param -= learning_rate * param.grad

上面,我們使用parem= -= learning_rate* param.grad 手動更新參數(shù)。

使用torch.optim 自動優(yōu)化參數(shù)。optim這個package提供了各種不同的模型優(yōu)化方法,包括SGD+momentum, RMSProp, Adam等等。

optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)
for t in range(500):
    y_pred = model(x)
    loss = loss_fn(y_pred, y)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • pytorch_detach 切斷網(wǎng)絡(luò)反傳方式
  • pytorch 禁止/允許計算局部梯度的操作
  • 如何利用Pytorch計算三角函數(shù)
  • 聊聊PyTorch中eval和no_grad的關(guān)系
  • Pytorch實現(xiàn)圖像識別之?dāng)?shù)字識別(附詳細(xì)注釋)
  • pytorch 優(yōu)化器(optim)不同參數(shù)組,不同學(xué)習(xí)率設(shè)置的操作
  • PyTorch 如何將CIFAR100數(shù)據(jù)按類標(biāo)歸類保存
  • PyTorch的Debug指南
  • Python深度學(xué)習(xí)之使用Pytorch搭建ShuffleNetv2
  • win10系統(tǒng)配置GPU版本Pytorch的詳細(xì)教程
  • 淺談pytorch中的nn.Sequential(*net[3: 5])是啥意思
  • pytorch visdom安裝開啟及使用方法
  • PyTorch CUDA環(huán)境配置及安裝的步驟(圖文教程)
  • pytorch中的nn.ZeroPad2d()零填充函數(shù)實例詳解
  • 使用pytorch實現(xiàn)線性回歸
  • pytorch實現(xiàn)線性回歸以及多元回歸
  • PyTorch學(xué)習(xí)之軟件準(zhǔn)備與基本操作總結(jié)

標(biāo)簽:常德 惠州 益陽 鷹潭 黑龍江 黔西 四川 上海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Pytorch實現(xiàn)全連接層的操作》,本文關(guān)鍵詞  Pytorch,實現(xiàn),全,連接,層,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Pytorch實現(xiàn)全連接層的操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于Pytorch實現(xiàn)全連接層的操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    日韩天堂在线观看| 精品一区二区免费看| av在线不卡网| 久草视频手机在线| 日本一区免费视频| 国产精品一级黄| 女人裸体性做爰全过| 欧美精品一区二区久久久| 久久国内精品自在自线400部| 国产xxxx视频| 91精品国产综合久久精品app| 亚洲成av人综合在线观看| 人妻av一区二区三区| 欧美日韩成人综合在线一区二区| 一区二区三区欧美日| 中文字幕视频观看| 欧美精品成人一区二区三区四区| 亚洲18女电影在线观看| 亚洲天堂美女视频| 日韩免费看的电影| 久久精品国产网站| 成年人免费视频播放| 中文字幕制服丝袜成人av| 成人白浆超碰人人人人| 91久久精品一区二区三| 亚洲国产三级在线| av网站免费在线播放| 久久综合九色综合欧美就去吻 | 黑人精品欧美一区二区蜜桃 | 成人免费高清在线| 色噜噜偷拍精品综合在线| 亚洲专区一二三| 黄色av网址在线观看| 精品免费国产一区二区三区四区| 狠狠色伊人亚洲综合成人| 91香蕉一区二区三区在线观看| 中文字幕五月欧美| 女王人厕视频2ⅴk| 日韩一本二本av| 国精产品一区一区三区mba桃花| 欧美a级片免费看| 亚洲精品视频免费看| 男人的天堂影院| 久久夜色精品国产噜噜av| 风间由美一区二区三区在线观看 | 日韩美女一区二区三区| 久久爱另类一区二区小说| 99久久久免费精品| 一区二区三区国产精品| 日韩精品电影一区二区| 国产精品国产a级| 理论片大全免费理伦片| 国产亚洲欧美在线| 美女被爆操网站| wwww国产精品欧美| 91香蕉视频污在线| 欧美成人精精品一区二区频| 丁香激情综合国产| 欧美一级理论片| 国产suv一区二区三区88区| 欧美色综合网站| 精品午夜一区二区三区在线观看| 日本高清视频一区二区| 蜜乳av一区二区三区| 久草网站在线观看| 强制捆绑调教一区二区| 色哟哟国产精品| 免费视频最近日韩| 色94色欧美sute亚洲线路一久| 日韩电影在线一区二区三区| www.99re7| 美女在线视频一区| 色妹子一区二区| 激情偷乱视频一区二区三区| 欧美日韩精品一二三区| 国产成人啪免费观看软件| 欧美一区二区三区电影| 成人一级黄色片| 精品粉嫩超白一线天av| 四虎国产精品免费| 国产欧美日本一区视频| 亚洲精品乱码久久久久久久| 亚洲丝袜美腿综合| 日本精品久久久久中文| 同产精品九九九| 色美美综合视频| 国产美女精品在线| 91精品国产美女浴室洗澡无遮挡| 成人蜜臀av电影| 久久蜜桃一区二区| 亚洲观看黄色网| 一区二区三区在线观看视频| 免费三级在线观看| 国内久久精品视频| 欧美一区二区三区在线看| 91在线免费播放| 国产精品高清亚洲| 成人午夜免费影院| 青青草国产精品97视觉盛宴| 欧美日韩精品欧美日韩精品一| kk眼镜猥琐国模调教系列一区二区 | 国产欧美精品一区二区色综合| 免费看黄色aaaaaa 片| 亚洲成人中文在线| 欧美在线免费播放| 91在线观看地址| 亚洲天堂网中文字| 全网免费在线播放视频入口 | 国产在线精品免费| 精品播放一区二区| 99久久国产精| 视频一区欧美日韩| 欧美精品 国产精品| 久久久久无码国产精品一区李宗瑞| 中文字幕日本不卡| 国产黄色的视频| 成人高清免费观看| 国产精品久久久久影院亚瑟| www.com.av| 国产成人8x视频一区二区| 久久久久久电影| 精品国产aaa| 国产美女精品人人做人人爽| 久久久久久**毛片大全| 呻吟揉丰满对白91乃国产区| 国产一区二区不卡老阿姨| 久久久久久亚洲综合影院红桃 | 亚洲aaa精品| 7777精品久久久大香线蕉| 成人在线观看一区二区| 亚洲国产视频在线| 欧美一三区三区四区免费在线看| 日韩少妇一区二区| 日本系列欧美系列| 欧美精品一区二区精品网| 国产综合精品久久久久成人av| 国产乱人伦偷精品视频免下载| 国产午夜久久久久| 一区二区三区影视| 99热这里都是精品| 亚洲午夜羞羞片| 欧美一级一级性生活免费录像| 少妇户外露出[11p]| 蜜臀av一级做a爰片久久| 精品国产乱码久久久久久牛牛| 日本精品久久久久中文| 不卡一区二区三区四区| 亚洲曰韩产成在线| 日韩一卡二卡三卡国产欧美| 国产精品20p| 国产精品18久久久久久vr| 中文字幕一区二区三区在线观看| 欧美伊人久久久久久久久影院 | 国产在线视频一区二区| 欧美国产精品劲爆| 色欧美88888久久久久久影院| 久久久男人的天堂| 久久国产日韩欧美精品| 国产精品日产欧美久久久久| 在线精品国精品国产尤物884a| 国产清纯白嫩初高中在线观看性色| 日本v片在线高清不卡在线观看| 国产午夜亚洲精品理论片色戒| 色综合久久88色综合天天免费| 伊人影院在线观看视频| 乱中年女人伦av一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 日本韩国一区二区| 无码精品一区二区三区在线播放 | 一级黄色片网址| 97se亚洲国产综合自在线观| 视频一区二区国产| 国产欧美一区二区精品仙草咪| 国产午夜手机精彩视频| 国产精九九网站漫画| 国精产品一区一区三区mba视频| √…a在线天堂一区| 欧美一级高清片| 成人在线观看小视频| 久久国产劲爆∧v内射| 韩国欧美国产1区| 亚洲一区二区av电影| 日本黄色网址大全| 成人av在线影院| 日本va欧美va精品发布| 国产精品的网站| 日韩一区二区三区在线观看| 手机在线中文字幕| 性欧美18—19sex性高清| 国产麻豆欧美日韩一区| 亚洲一区二区欧美日韩| 国产亚洲精品aa午夜观看| 欧美日韩在线免费视频| 99re6热在线精品视频| 男人网站在线观看| 粉嫩aⅴ一区二区三区四区| 午夜精品视频在线观看| 亚洲国产成人一区二区三区| 91精品蜜臀在线一区尤物| 性欧美videos|