Middle
Блокуи резидуалӣ чист?
sobes.tech AI
Ҷавоб аз AI
Блоки резидуалӣ элементе архитектурии шабакаҳои нейронӣ мебошанд, ки дар ResNet ворид шудаанд ва кӯмак мекунанд, ки масъалаи градиентҳои нопадидаро дар вақти омӯзиши шабакаҳои хеле амиқ ҳал кунанд.
Назарияи блоки резидуалӣ дар он аст, ки ба ҷои омӯзиши мустақимии харитаи ( H(x) ), блок омӯзиши ислоҳотро ( F(x) = H(x) - x ) мекунад, яъне резидуал. Дар охир, натиҷаи блок ҳамчун:
[ \text{баромад} = F(x) + x ]
кифоя аст, ки:
- ( x ) воридоти блок аст,
- ( F(x) ) натиҷаи чанд қабат (масалан, конволютсия, фаъолсозӣ) мебошад.
Ин имкон медиҳад, ки градиент ба осонӣ аз қабатҳо гузарад, ки омӯзиши моделҳои амиқро беҳтар мекунад.
Масалан, як блоки резидуалии содда (псевдокод):
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 # илова кардани вуруд (пайвандии парвоз)
out = self.relu(out)
return out
Ин роҳ, блокҳои резидуалӣ имкон медиҳанд, ки шабакаҳои нейронӣ хеле амиқ сохта шаванд, бе паст шудани сифати омӯзиш.