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.