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

Pytorch學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)模塊torch.nn.Module和torch.nn.Sequential

這篇具有很好參考價(jià)值的文章主要介紹了Pytorch學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)模塊torch.nn.Module和torch.nn.Sequential。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1. torch.nn.Module

官方文檔:torch.nn.Module
CLASS torch.nn.Module(*args, **kwargs)

  • 所有神經(jīng)網(wǎng)絡(luò)模塊的基類。
  • 您的模型也應(yīng)該對(duì)此類進(jìn)行子類化。
  • 模塊還可以包含其他模塊,允許將它們嵌套在樹(shù)結(jié)構(gòu)中。您可以將子模塊分配為常規(guī)屬性:
  • training(bool)-布爾值表示此模塊是處于訓(xùn)練模式還是評(píng)估模式。

定義一個(gè)模型

import torch.nn as nn
import torch.nn.functional as F


class Model(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(1, 20, 5)
        self.conv2 = nn.Conv2d(20, 20, 5)

    def forward(self, x):
        x = F.relu(self.conv1(x))
        return F.relu(self.conv2(x))
  • 以這種方式分配的子模塊將被注冊(cè),并且當(dāng)您調(diào)用 to() 等時(shí)也將轉(zhuǎn)換其參數(shù)。
    • to(device=None,dtype=None,non_blocking=False)
      device ( torch.device) – 該模塊中參數(shù)和緩沖區(qū)所需的設(shè)備
    • to(dtype ,non_blocking=False)
      dtype ( torch.dtype) – 該模塊中參數(shù)和緩沖區(qū)所需的浮點(diǎn)或復(fù)雜數(shù)據(jù)類型
    • to(tensor,non_blocking=False)
      張量( torch.Tensor ) – 張量,其數(shù)據(jù)類型和設(shè)備是該模塊中所有參數(shù)和緩沖區(qū)所需的數(shù)據(jù)類型和設(shè)備

引用上面定義的模型,將模型轉(zhuǎn)移到GPU上

# 創(chuàng)建模型
model = Model()

# 定義設(shè)備 gpu1
gpu1 = torch.device("cuda:1")
model = model.to(gpu1)

1.1 add_module(name,module)

將子模塊添加到當(dāng)前模塊。
可以使用給定的名稱作為屬性訪問(wèn)模塊。

add_module(name,module)
主要參數(shù):

  • name(str)-子模塊的名稱??梢允褂媒o定的名稱從此模塊訪問(wèn)子模塊。
  • module(Module)-要添加到模塊的子模塊。

Pytorch學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)模塊torch.nn.Module和torch.nn.Sequential,pytorch學(xué)習(xí),pytorch,學(xué)習(xí),人工智能,深度學(xué)習(xí)
添加一個(gè)卷積層

model.add_module("conv3", nn.Conv2d(20, 20, 5))

Pytorch學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)模塊torch.nn.Module和torch.nn.Sequential,pytorch學(xué)習(xí),pytorch,學(xué)習(xí),人工智能,深度學(xué)習(xí)

1.2 apply(fn)

將 fn 遞歸地應(yīng)用于每個(gè)子模塊(由 .children() 返回)以及self。
典型的用法包括初始化模型的參數(shù)(另請(qǐng)參見(jiàn)torch.nn.init)。

apply(fn)
主要參數(shù):

  • fn( Module -> None)-應(yīng)用于每個(gè)子模塊的函數(shù)

將所有線性層的權(quán)重置為1

import torch
from torch import nn


@torch.no_grad()
def init_weights(m):
    print(m)
    if type(m) == nn.Linear:
        m.weight.fill_(1.0)
        print(m.weight)


net = nn.Sequential(nn.Linear(2, 2), nn.Linear(2,2))
net.apply(init_weights)

Pytorch學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)模塊torch.nn.Module和torch.nn.Sequential,pytorch學(xué)習(xí),pytorch,學(xué)習(xí),人工智能,深度學(xué)習(xí)

1.3 cpu()

將所有模型參數(shù)和緩沖區(qū)移動(dòng)到CPU。

device = torch.device("cpu")
model = model.to(device)

1.4 cuda(device=None)

將所有模型參數(shù)和緩沖區(qū)移動(dòng)到GPU。

這也使關(guān)聯(lián)的參數(shù)和緩沖區(qū)成為不同的對(duì)象。因此,如果模塊在優(yōu)化時(shí)將駐留在GPU上,則應(yīng)在構(gòu)造優(yōu)化器之前調(diào)用該函數(shù)。

cuda(device=None)
主要參數(shù):

  • device(int,可選)-如果指定,所有參數(shù)將被復(fù)制到該設(shè)備

轉(zhuǎn)移到GPU包括以下參數(shù):

  1. 模型
  2. 損失函數(shù)
  3. 輸入輸出
# 創(chuàng)建模型
model = Model()

# 將模型轉(zhuǎn)移到GPU上
model = model.cuda()

# 將損失函數(shù)轉(zhuǎn)移到GPU上
loss_fn = nn.CrossEntropyLoss()
loss_fn = loss_fn.cuda()

# 將輸入輸出轉(zhuǎn)移到GPU上
imgs, targets = data
imgs = imgs.cuda()
targets = targets.cuda()

另一種表示形式(通過(guò) to(device) 來(lái)表示)

# 創(chuàng)建模型
model = Model()

# 定義設(shè)備:如果有GPU,則在GPU上訓(xùn)練, 否則在CPU上訓(xùn)練
device = torch.device("cuda" if torch.cuda.is_available else "cpu")

# 將模型轉(zhuǎn)移到GPU上
model = model.to(device)

# 將損失函數(shù)轉(zhuǎn)移到GPU上
loss_fn = nn.CrossEntropyLoss()
loss_fn = loss_fn.to(device)

# 將輸入輸出轉(zhuǎn)移到GPU上
imgs, targets = data
imgs = imgs.to(device)
targets = targets.to(device)

1.5 train()

將模塊設(shè)置為訓(xùn)練模式。

這只對(duì)某些模塊有任何影響。如受影響,請(qǐng)參閱特定模塊在培訓(xùn)/評(píng)估模式下的行為詳情,例如: Dropout 、 BatchNorm 等。

train(mode=True)
主要參數(shù):

  • mode(bool)-是否設(shè)置訓(xùn)練模式( True )或評(píng)估模式( False )。默認(rèn)值: True 。

1.6 eval()

將模塊設(shè)置為評(píng)估模式。

這只對(duì)某些模塊有任何影響。如受影響,請(qǐng)參閱特定模塊在培訓(xùn)/評(píng)估模式下的行為詳情,例如: Dropout 、 BatchNorm 等。

在進(jìn)行模型測(cè)試的時(shí)候會(huì)用到。

1.7 state_dict()

返回一個(gè)字典,其中包含對(duì)模塊整個(gè)狀態(tài)的引用。

返回模型的關(guān)鍵字典。

model = Model()
print(model.state_dict().keys())

Pytorch學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)模塊torch.nn.Module和torch.nn.Sequential,pytorch學(xué)習(xí),pytorch,學(xué)習(xí),人工智能,深度學(xué)習(xí)
在保存模型的時(shí)候我們也可以直接保存模型的 state_dict()

model = Model()

# 保存模型
# 另一種方式:torch.save(model, "model.pth")
torch.save(model.state_dict(), "model.pth")

# 加載模型
model.load_state_dict(torch.load("model.pth"))

2. torch.nn.Sequential

順序容器。模塊將按照它們?cè)跇?gòu)造函數(shù)中傳遞的順序添加到它。

Sequential 的 forward() 方法接受任何輸入并將其轉(zhuǎn)發(fā)到它包含的第一個(gè)模塊。然后,它將輸出“鏈接”到每個(gè)后續(xù)模塊的輸入,最后返回最后一個(gè)模塊的輸出。

官方文檔:torch.nn.Sequential
CLASS torch.nn.Sequential(*args: Module)

import torch
from torch import nn

# 使用 Sequential 創(chuàng)建一個(gè)小型模型。運(yùn)行 `model` 時(shí)、
# 輸入將首先傳遞給 `Conv2d(1,20,5)`。輸出
# `Conv2d(1,20,5)`的輸出將作為第一個(gè)
# 第一個(gè) `ReLU` 的輸出將成為 `Conv2d(1,20,5)` 的輸入。
# `Conv2d(20,64,5)` 的輸入。最后
# `Conv2d(20,64,5)` 的輸出將作為第二個(gè) `ReLU` 的輸入
model = nn.Sequential(
            nn.Conv2d(1, 20, 5),
            nn.ReLU(),
            nn.Conv2d(20, 64, 5),
            nn.ReLU()
        )

Pytorch學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)模塊torch.nn.Module和torch.nn.Sequential,pytorch學(xué)習(xí),pytorch,學(xué)習(xí),人工智能,深度學(xué)習(xí)

2.1 append

append 在末尾追加給定塊。

  • append(module)
    在末尾追加給定模塊。
    Pytorch學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)模塊torch.nn.Module和torch.nn.Sequential,pytorch學(xué)習(xí),pytorch,學(xué)習(xí),人工智能,深度學(xué)習(xí)
def append(self, module):
    self.add_module(str(len(self)), module)
    return self


append(model, nn.Conv2d(64, 64, 5))
append(model, nn.ReLU())
print(model)

Pytorch學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)模塊torch.nn.Module和torch.nn.Sequential,pytorch學(xué)習(xí),pytorch,學(xué)習(xí),人工智能,深度學(xué)習(xí)

3. torch.nn.functional.conv2d

對(duì)由多個(gè)輸入平面組成的輸入圖像應(yīng)用2D卷積。
卷積神經(jīng)網(wǎng)絡(luò)詳解:csdn鏈接

官方文檔:torch.nn.functional.conv2d
torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1)
主要參數(shù):

  • input:形狀的輸入張量,(minibatch, inchannels, iH, iW)。
  • weigh:卷積核權(quán)重,形狀為 (out_channels, inchannels / groups, kH, kW)

默認(rèn)參數(shù):

  • bias:偏置,默認(rèn)值: None。
  • stride:步幅,默認(rèn)值:1。
  • padding:填充,默認(rèn)值:0。
  • dilation :內(nèi)核元素之間的間距。默認(rèn)值:1。
  • groups:將輸入拆分為組,in_channels 應(yīng)被組數(shù)整除。默認(rèn)值:1。

Pytorch學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)模塊torch.nn.Module和torch.nn.Sequential,pytorch學(xué)習(xí),pytorch,學(xué)習(xí),人工智能,深度學(xué)習(xí)
對(duì)上圖卷積操作進(jìn)行代碼實(shí)現(xiàn)

import torch.nn.functional as F

input = torch.tensor([[0, 1, 2],
                      [3, 4, 5],
                      [6, 7, 8]], dtype=float32)
kernel = torch.tensor([[0, 1],
                       [2, 3]], dtype=float32)


# F.conv2d 輸入維數(shù)為4維
# torch.reshape(input, shape)
# reshape(樣本數(shù),通道數(shù),高度,寬度)
input = torch.reshape(input, (1, 1, 3, 3))
kernel = torch.reshape(kernel, (1, 1, 2, 2))

output = F.conv2d(input, kernel, stride=1)
print(input.shape)
print(kernel.shape)
print(input)
print(kernel)
print(output)

Pytorch學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)模塊torch.nn.Module和torch.nn.Sequential,pytorch學(xué)習(xí),pytorch,學(xué)習(xí),人工智能,深度學(xué)習(xí)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-692109.html

到了這里,關(guān)于Pytorch學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)模塊torch.nn.Module和torch.nn.Sequential的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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)文章

  • Pytorch:torch.nn.Module

    torch.nn.Module 是 PyTorch 中神經(jīng)網(wǎng)絡(luò)模型的基類,它提供了模型定義、參數(shù)管理和其他相關(guān)功能。 以下是關(guān)于 torch.nn.Module 的詳細(xì)說(shuō)明: 1. torch.nn.Module 的定義: torch.nn.Module 是 PyTorch 中所有神經(jīng)網(wǎng)絡(luò)模型的基類,它提供了模型定義和許多實(shí)用方法。自定義的神經(jīng)網(wǎng)絡(luò)模型應(yīng)該繼

    2024年01月16日
    瀏覽(22)
  • Pytorch-----torch.nn.Module.modules()

    在使用pytorch構(gòu)建神經(jīng)網(wǎng)絡(luò)時(shí),定義的網(wǎng)絡(luò)模型必須要繼承自torch.nn.Module這一父類。在Module類中,有一個(gè)函數(shù)可以返回網(wǎng)絡(luò)中所有模塊的迭代器。這就是torch.nn.Module.modules() 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 源碼中的解釋如下: 不只是返回網(wǎng)絡(luò)中的某一層,

    2024年02月14日
    瀏覽(21)
  • 深入淺出Pytorch函數(shù)——torch.nn.Module

    分類目錄:《深入淺出Pytorch函數(shù)》總目錄 Pytorch中所有網(wǎng)絡(luò)的基類,我們的模型也應(yīng)該繼承這個(gè)類。 Modules 也可以包含其它 Modules ,允許使用樹(shù)結(jié)構(gòu)嵌入他們,我們還可以將子模塊賦值給模型屬性。 語(yǔ)法 方法 torch.nn.Module.apply 實(shí)例 通過(guò)上面方式賦值的 submodule 會(huì)被注冊(cè),當(dāng)調(diào)

    2024年02月12日
    瀏覽(99)
  • Pytorch:torch.nn.Module.apply用法詳解

    torch.nn.Module.apply 是 PyTorch 中用于遞歸地應(yīng)用函數(shù)到模型的所有子模塊的方法。它允許對(duì)模型中的每個(gè)子模塊進(jìn)行操作,比如初始化權(quán)重、改變參數(shù)類型等。 以下是關(guān)于 torch.nn.Module.apply 的示例: 1. 語(yǔ)法 Module:PyTorch 中的神經(jīng)網(wǎng)絡(luò)模塊,例如 torch.nn.Module 的子類。 fn:要應(yīng)用到

    2024年01月15日
    瀏覽(41)
  • Pytorch學(xué)習(xí)筆記(5):torch.nn---網(wǎng)絡(luò)層介紹(卷積層、池化層、線性層、激活函數(shù)層)

    Pytorch學(xué)習(xí)筆記(5):torch.nn---網(wǎng)絡(luò)層介紹(卷積層、池化層、線性層、激活函數(shù)層)

    ?一、卷積層—Convolution Layers ?1.1?1d / 2d / 3d卷積 1.2 卷積—nn.Conv2d() nn.Conv2d 1.3?轉(zhuǎn)置卷積—nn.ConvTranspose nn.ConvTranspose2d ?二、池化層—Pooling Layer (1)nn.MaxPool2d (2)nn.AvgPool2d (3)nn.MaxUnpool2d ?三、線性層—Linear Layer ?nn.Linear ?四、激活函數(shù)層—Activate Layer (1)nn.Sigmoid ?(

    2024年01月20日
    瀏覽(22)
  • 卷積神經(jīng)網(wǎng)絡(luò)——上篇【深度學(xué)習(xí)】【PyTorch】

    卷積神經(jīng)網(wǎng)絡(luò)——上篇【深度學(xué)習(xí)】【PyTorch】

    5.1.1、理論部分 全連接層后,卷積層出現(xiàn)的意義? 一個(gè)足夠充分的照片數(shù)據(jù)集,輸入,全連接層參數(shù),GPU成本,訓(xùn)練時(shí)間是巨大的。 (convolutional neural networks,CNN)是機(jī)器學(xué)習(xí)利用自然圖像中一些已知結(jié)構(gòu)的創(chuàng)造性方法,需要更少的參數(shù),在處理圖像和其他類型的結(jié)構(gòu)化數(shù)據(jù)

    2024年02月12日
    瀏覽(25)
  • PyTorch深度學(xué)習(xí)實(shí)戰(zhàn)(3)——使用PyTorch構(gòu)建神經(jīng)網(wǎng)絡(luò)

    PyTorch深度學(xué)習(xí)實(shí)戰(zhàn)(3)——使用PyTorch構(gòu)建神經(jīng)網(wǎng)絡(luò)

    我們已經(jīng)學(xué)習(xí)了如何從零開(kāi)始構(gòu)建神經(jīng)網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)通常包括輸入層、隱藏層、輸出層、激活函數(shù)、損失函數(shù)和學(xué)習(xí)率等基本組件。在本節(jié)中,我們將學(xué)習(xí)如何在簡(jiǎn)單數(shù)據(jù)集上使用 PyTorch 構(gòu)建神經(jīng)網(wǎng)絡(luò),利用張量對(duì)象操作和梯度值計(jì)算更新網(wǎng)絡(luò)權(quán)重。 1.1 使用 PyTorch 構(gòu)建神

    2024年02月08日
    瀏覽(25)
  • PyTorch入門(mén)學(xué)習(xí)(八):神經(jīng)網(wǎng)絡(luò)-卷積層

    目錄 一、數(shù)據(jù)準(zhǔn)備 二、創(chuàng)建卷積神經(jīng)網(wǎng)絡(luò)模型 三、可視化卷積前后的圖像 一、數(shù)據(jù)準(zhǔn)備 首先,需要準(zhǔn)備一個(gè)數(shù)據(jù)集來(lái)演示卷積層的應(yīng)用。在這個(gè)示例中,使用了CIFAR-10數(shù)據(jù)集,該數(shù)據(jù)集包含了10個(gè)不同類別的圖像數(shù)據(jù),用于分類任務(wù)。使用PyTorch的 torchvision 庫(kù)來(lái)加載CIFAR-1

    2024年02月07日
    瀏覽(30)
  • pytorch學(xué)習(xí)——線性神經(jīng)網(wǎng)絡(luò)——1線性回歸

    pytorch學(xué)習(xí)——線性神經(jīng)網(wǎng)絡(luò)——1線性回歸

    概要:線性神經(jīng)網(wǎng)絡(luò)是一種最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)模型,它由若干個(gè)線性變換和非線性變換組成。線性變換通常表示為矩陣乘法,非線性變換通常是一個(gè)逐元素的非線性函數(shù)。線性神經(jīng)網(wǎng)絡(luò)通常用于解決回歸和分類問(wèn)題。 ????????線性回歸是一種常見(jiàn)的機(jī)器學(xué)習(xí)算法,用于建

    2024年02月15日
    瀏覽(24)
  • 小白的機(jī)器學(xué)習(xí)之路(四)神經(jīng)網(wǎng)絡(luò)的初步認(rèn)識(shí):基于pytorch搭建自己的神經(jīng)網(wǎng)絡(luò)

    小白的機(jī)器學(xué)習(xí)之路(四)神經(jīng)網(wǎng)絡(luò)的初步認(rèn)識(shí):基于pytorch搭建自己的神經(jīng)網(wǎng)絡(luò)

    當(dāng)前交通大數(shù)據(jù)業(yè)務(wù)的需要,需要承擔(dān)一部分算法工作(數(shù)據(jù)處理) 目標(biāo)四: 學(xué)習(xí)深度學(xué)習(xí)基礎(chǔ):了解神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)、反向傳播算法和激活函數(shù)等。 目標(biāo)任務(wù):使用深度學(xué)習(xí)算法構(gòu)建一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)模型,并訓(xùn)練模型。 學(xué)習(xí)計(jì)劃小貼士: 每天定期復(fù)習(xí)前幾天的

    2024年02月15日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包