Пользовался ли библиотеками для глубокого обучения?

«Пользовался ли библиотеками для глубокого обучения?» — вопрос из категории Нейронные сети и Deep Learning, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, активно работаю с PyTorch и TensorFlow/Keras. Выбор зависит от задачи: PyTorch — для исследований и более гибких архитектур, TensorFlow/Keras — для production-развертывания, особенно с использованием TF Serving.

Пример реализации сверточной сети (CNN) на PyTorch для классификации изображений CIFAR-10:

import torch
import torch.nn as nn
import torch.nn.functional as F

class SimpleCNN(nn.Module):
    def __init__(self, num_classes=10):
        super().__init__()
        self.conv1 = nn.Conv2d(3, 32, kernel_size=3, padding=1)
        self.pool = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)
        self.fc1 = nn.Linear(64 * 8 * 8, 128)  # После двух пулов размер 8x8
        self.fc2 = nn.Linear(128, num_classes)
        self.dropout = nn.Dropout(0.25)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))  # -> [batch, 32, 16, 16]
        x = self.pool(F.relu(self.conv2(x)))  # -> [batch, 64, 8, 8]
        x = torch.flatten(x, 1)               # -> [batch, 64*8*8]
        x = self.dropout(F.relu(self.fc1(x))) # -> [batch, 128]
        x = self.fc2(x)                       # -> [batch, 10]
        return x

# Пример обучения
model = SimpleCNN()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

Мой опыт включает:

  • Трансформеры: Fine-tuning предобученных моделей из библиотеки Hugging Face Transformers (BERT, GPT-2) для NLP задач.
  • Автоэнкодеры: Для задачи снижения размерности и поиска аномалий.
  • Перенос обучения (Transfer Learning): Использование предобученных CNN (ResNet, EfficientNet) из torchvision.models для компьютерного зрения.
  • Оптимизация: Работа с mixed precision training (torch.cuda.amp) для ускорения обучения и уменьшения потребления памяти на GPU.