Несколько недель назад мы представили нашу библиотеку с открытым исходным кодом под названием TamnunML. Цель tamnun - научиться легко использовать передовые методы машинного и глубокого обучения. На этой неделе мы представляем то, что, по нашему мнению, должно значительно упростить обучение модулей PyTorch и, таким образом, улучшить нашу способность предоставлять более продвинутые методы в TamnunML, TorchEstimator!

PyTorch - очень популярный и мощный фреймворк для глубокого обучения. Для тех, кто с ним не знаком, это пакет для научных вычислений (например, numpy) с упором на распределенные вычисления (на графических процессорах) и модели и алгоритмы, связанные с глубоким обучением. Используя тензоры и операции с тензорами, PyTorch может создавать сложные модели, такие как сверточные слои, повторяющиеся слои и другие. Кроме того, он имеет модуль Autograd, который автоматически вычисляет градиенты по всем связанным слоям (и тензорам) и очень полезен для алгоритмов оптимизации, таких как градиентный спуск.

Довольно просто создать нейронную сеть в PyTorch, вот очень простой пример полностью подключенной нейронной сети с одним скрытым слоем для задач классификации или регрессии:

class MyFullyConnectedNeuralNetwork(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(MyFullyConnectedNeuralNetwork, self).__init__()
        self.hidden_layer = nn.Linear(input_size, hidden_size)
        self.output_layer = nn.Linear(hidden_size, output_size)
    def forward(input):
        hidden_output = self.hidden_layer(input)
        out = self.output_layer(hidden_output)
        return out

Как видите, это довольно просто и само объяснимо. В дополнение к тензорам, слоям и Autograd PyTorch предоставляет инструменты для обучения этих моделей, включая оптимизаторы, функции потерь и многое другое.

PyTorch имеет множество отличных функций, но, что более важно, существует множество расширенных методов, реализованных сообществом с PyTorch. Такие методы, как трансформаторы, CNN, LSTM и многое другое. В tamnun мы хотим использовать все эти возможности и сделать это с минимальными усилиями. С помощью объекта theTorchEstimator мы можем делать именно это!

Здесь мы хотим показать очень простой пример, демонстрирующий его силу. Мы обучим простой nn.Linear модуль PyTorch распознавать рукописные цифры. Чтобы использовать TorchEstimator, все, что нам нужно сделать, это инициализировать наш модуль (который наследует класс nn.Module от PyTorch) и просто выполнить fit().predict()! Вот полный пример этого:

TorchEstimator поддерживает задачи классификации и регрессии! сразу за желаемым task_type в качестве параметра. Вы также можете найти это в этой записной книжке.

Класс TorchEstimator - важный шаг на пути к внедрению гораздо большего количества моделей и методов глубокого обучения в TamnunML. Его гибкость позволяет комбинировать разные методы и создавать новые.

Заинтересованы в этом виде работы? Мы всегда ищем талантливых людей, чтобы присоединиться к нашей команде!