Ответ
Да, активно работаю с 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.