Middle
20
Опишите train loop для бинарной классификации с нейронной сетью (linear -> relu -> linear -> sigmoid). Какую loss функцию выбрать?
Companies where asked
Answer from AI
sobes.tech AI
Для бинарной классификации с нейронной сетью, состоящей из последовательности слоев: linear -> ReLU -> linear -> sigmoid, train loop обычно включает следующие шаги:
-
Прямой проход (forward pass):
- Входные данные проходят через первый линейный слой.
- Применяется функция активации ReLU.
- Результат передается во второй линейный слой.
- На выходе применяется сигмоидальная функция для получения вероятности класса.
-
Вычисление ошибки (loss):
- Используется функция потерь, подходящая для бинарной классификации, например, Binary Cross-Entropy Loss (логарифмическая потеря).
-
Обратный проход (backpropagation):
- Вычисляются градиенты по параметрам сети.
-
Обновление параметров:
- Параметры обновляются с помощью оптимизатора (например, SGD, Adam).
Пример псевдокода на Python с использованием PyTorch:
import torch
import torch.nn as nn
import torch.optim as optim
class SimpleNN(nn.Module):
def __init__(self, input_dim, hidden_dim):
super().__init__()
self.linear1 = nn.Linear(input_dim, hidden_dim)
self.relu = nn.ReLU()
self.linear2 = nn.Linear(hidden_dim, 1)
self.sigmoid = nn.Sigmoid()
def forward(self, x):
x = self.linear1(x)
x = self.relu(x)
x = self.linear2(x)
x = self.sigmoid(x)
return x
model = SimpleNN(input_dim=10, hidden_dim=5)
criterion = nn.BCELoss() # Binary Cross Entropy
optimizer = optim.Adam(model.parameters(), lr=0.001)
for epoch in range(num_epochs):
for inputs, labels in dataloader:
outputs = model(inputs)
loss = criterion(outputs.squeeze(), labels.float())
optimizer.zero_grad()
loss.backward()
optimizer.step()
Таким образом, ключевая loss функция для бинарной классификации — Binary Cross-Entropy, а train loop включает forward pass, вычисление loss, backpropagation и обновление параметров.