中国人与黑人牲交FREE欧美_丰满熟妇XXXX_婷婷久久综合九色综合97_免费无码成人AV在线播软件_免费AV 中文字幕 在线

深度學(xué)習(xí)(十一)——神經(jīng)網(wǎng)絡(luò):線形層及其他層介紹

2023-08-22 18:35:50
一、正則化層中nn.BatchNorm2d簡(jiǎn)介

主要作用:對(duì)輸入函數(shù)采用正則化。正則化的主要作用是加快神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度。

class torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True, device=None, dtype=None)

輸入?yún)?shù):


(資料圖片)

num_features: 形狀為\((N, C, H, W)\)

其他參數(shù)默認(rèn)即可

舉例:

# With Learnable Parametersm = nn.BatchNorm2d(100)# Without Learnable Parametersm = nn.BatchNorm2d(100, affine=False)input = torch.randn(20, 100, 35, 45)output = m(input)

該函數(shù)用得不多

二、其他層簡(jiǎn)介1. Recurrent Layers(Recurrent層)

內(nèi)含RNN、LSTM等函數(shù),主要在nlp領(lǐng)域用的比較多

官方文檔: Recurrent Layers

2. Transformer Layers3. Linear Layers(線性層)nn.Linear
class torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None
(1)參數(shù)介紹及計(jì)算方法

參數(shù)介紹:

in_features

out_features

bias(bool)

線性層具體參數(shù)解釋如下圖:

\(in\_features=d\),即指的是in_features的個(gè)數(shù)

\(out\_features=L\),即指的是out_features的個(gè)數(shù)

計(jì)算\(g\)的方法(以上圖\(g_1\)為例):

\(x_1,\dots,x_i,\dots,x_d\)每個(gè)指向\(g_1\)的箭頭上,均有:\[k_i*x_i+b_i\]

其中,\(b_i\)代表偏置,參數(shù)\(bias=True\),則加上\(b\);\(bias=False\),則不加\(b\)

在每次訓(xùn)練神經(jīng)網(wǎng)絡(luò)的過(guò)程中,均會(huì)調(diào)整\(k_i\)、\(b_i\)的值,直到它變成一個(gè)合適的數(shù)值

由此可得:

\[g_1=\sum^u1erv8f_{i=1}{k_ix_i+b_i}\](2)代碼示例

以典型的VGG16 Model網(wǎng)絡(luò)結(jié)構(gòu)為例:

因此,設(shè)置in_features=4096; out_feature=1000

下面代碼以一個(gè)尺寸為n×n的圖像為例,先將圖像展開(kāi)成一行,即\(n^2\)的尺寸。最后將\(n^2\)尺寸的圖像通過(guò)線性層,轉(zhuǎn)化為1×10尺寸的圖像。
import torchimport torchvisionfrom torch.utils.data import DataLoaderfrom torch import nnfrom torch.nn import Lineardataset=torchvision.datasets.CIFAR10("./dataset",train=False,download=True,transform=torchvision.transforms.ToTensor())dataloder=DataLoader(dataset,batch_size=64)# for data in dataloder:#     imgs,targets = data#     #print(imgs.shape)   #[Run] torch.Size([64, 3, 32, 32])##     #我們的目標(biāo)是把圖像尺寸變成1×1×1×根據(jù)前面計(jì)算得出的數(shù),下面進(jìn)行轉(zhuǎn)換#     output=torch.reshape(imgs,(1,1,1,-1))#     #print(output.shape)  #[Run] torch.Size([1, 1, 1, 196608])#根據(jù)上面output得出的196608尺寸數(shù)據(jù),構(gòu)造神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)class Demo(nn.Module):    def __init__(self):        super(Demo,self).__init__()        self.linear1=Linear(in_features=196608,out_features=10)    def forward(self,input):        output=self.linear1(input)        return output#調(diào)用神經(jīng)網(wǎng)絡(luò)demo=Demo()for data in dataloder:    imgs,targets=data    output=torch.reshape(imgs,(1,1,1,-1))    output=demo.forward(output)    print(output.shape)  #[Run] torch.Size([1, 1, 1, 10])

由此,成功將1×1×1×196608尺寸的圖像轉(zhuǎn)化為1×1×1×10尺寸的圖像

注意:

可以用torch.flatten()函數(shù)將圖像展開(kāi)成一行,即替換第33行的代碼output=torch.reshape(imgs,(1,1,1,-1)),為:
output=torch.flatten(imgs)# print(output.shape)  #[Run] torch.Size([196608])

torch.flatten()torch.reshape()的區(qū)別:

torch.flatten更方便,可以直接把圖像變成一行

torch.reshape功能更強(qiáng)大,可任意指定圖像尺寸

4. Dropout Layers

主要作用:在訓(xùn)練的過(guò)程中隨機(jī)把一些input(輸入的tensor數(shù)據(jù)類(lèi)型)變成0。變成0的概率由\(p\)決定

class torch.nn.Dropout(p=0.5, inplace=False)
變成0的主要原因是防止過(guò)擬合5. Sparse Layersnn.Embedding

主要用于自然語(yǔ)言處理中

class torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None,      max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False,      _weight=None, _freeze=False, device=None, dtype=None)
6.Distance Functions

主要作用:計(jì)算兩個(gè)值之間的誤差,并指定誤差的衡量標(biāo)準(zhǔn)

7. Loss Function

主要作用:計(jì)算Loss的誤差大小

三、調(diào)用pytorch中的網(wǎng)絡(luò)模型

現(xiàn)在我們已經(jīng)學(xué)會(huì)如何自己搭建神經(jīng)網(wǎng)絡(luò)模型了,下面介紹pytorch中神經(jīng)網(wǎng)絡(luò)模型的調(diào)用方法。根據(jù)官方文檔,我們可以調(diào)用自己需要的網(wǎng)絡(luò)結(jié)構(gòu),而不需要自己寫(xiě)代碼

1.圖像方面的網(wǎng)絡(luò)結(jié)構(gòu)

官網(wǎng)文檔:Models and pre-trained weights — Torchvision 0.15 documentation

2.語(yǔ)音方面的網(wǎng)絡(luò)結(jié)構(gòu)

官方文檔:torchaudio.models — Torchaudio 2.0.1 documentation

標(biāo)簽:

x 廣告
x 廣告

Copyright ©  2015-2022 太平洋文旅網(wǎng)版權(quán)所有  備案號(hào):豫ICP備2022016495號(hào)-17   聯(lián)系郵箱:93 96 74 66 9@qq.com