Sobes.tech
Middle

Qolgan blok nima?

sobes.tech AI

AIdan javob

Rezidüel blok, ResNet ga kirishgan va juda chuqur tarmoqlarning o'qitilishi davomida gradientlarning yo'qolishi muammosiga qarshi yordam beradigan arxitektura elementidir.

Rezidüel blokning g'oyasi shundan iboratki, to'g'ridan-to'g'ri ( H(x) ) xaritasi o'rganish o'rniga, blok ( F(x) = H(x) - x ) tuzatishni o'rganadi, ya'ni qoldiq. Natijada, blok chiqishi quyidagicha hisoblanadi:

[ \text{chiqish} = F(x) + x ]

bu yerda:

  • ( x ) blokning kirishidir,
  • ( F(x) ) bir nechta qatlamlarning (masalan, konvolyutsiya, aktivatsiyalar) natijasidir.

Bu gradientning qatlamlar orqali osonroq o'tishini ta'minlaydi va chuqur modellarni o'qitishni yaxshilaydi.

Oddiy rezidüel blok misoli (psevdokod):

import torch
import torch.nn as nn

class ResidualBlock(nn.Module):
    def __init__(self, channels):
        super().__init__()
        self.conv1 = nn.Conv2d(channels, channels, kernel_size=3, padding=1)
        self.bn1 = nn.BatchNorm2d(channels)
        self.relu = nn.ReLU()
        self.conv2 = nn.Conv2d(channels, channels, kernel_size=3, padding=1)
        self.bn2 = nn.BatchNorm2d(channels)

    def forward(self, x):
        residual = x
        out = self.conv1(x)
        out = self.bn1(out)
        out = self.relu(out)
        out = self.conv2(out)
        out = self.bn2(out)
        out += residual  # kirishni qo'shamiz (sakrash bog'lanishi)
        out = self.relu(out)
        return out

Shu tarzda, rezidüel bloklar juda chuqur neyron tarmoqlarni qurishga imkon beradi va o'qitish sifatini pasaytirmaydi.