Знакомство с Python и машинным обучением у большинства начинающих разработчиков проходит по схожему сценарию. Освоив базовые концепции, обычно приступают к новым библиотекам:
Затем у разработчика возникает вопрос: что ещё нужно изучить, чтобы развить навыки, повысить качество своих проектов и стать более ценным специалистом? Неплохие варианты — набирающие популярность библиотеки Keras и PyTorch. Разберёмся, насколько они востребованы и для чего нужны.
Keras — библиотека с открытым исходным кодом, написанная на языке Python. Её поддерживает корпорация Google. Главное предназначение Keras — работа с нейронными сетями. Она относится к верхнеуровневым библиотекам, так что позволяет создавать нейронные сети с помощью простых команд. При этом пользователь сам выбирает, на каком бэкенде производить расчёты: Deeplearning4j, MXNet, Microsoft Cognitive Toolkit (CNTK), Theano или TensorFlow.
У библиотеки есть готовая реализация известных архитектур нейросетей: VGG16, VGG19, Xception, NASNet, MobileNet, MobileNetV2, InceptionV3, InceptionResNetV2. Также в Keras реализовано большинство модулей нейронной сети:
PyTorch — фреймворк, распространяемый по лицензии BSD. Создан на базе решения Torch специально для языка Python. Его поддерживает корпорация Facebook. При помощи PyTorch можно решать широкий спектр задач машинного обучения (в том числе глубокого), нейросетей, обработки естественного языка. Кроме того, фреймворк даёт возможность создавать собственные слои, использовать функции активации слоёв и все остальные модули нейронной сети с помощью классов и функций Python.
Keras: преимущества
Keras относительно легко освоить новичкам. Так, достаточно всего нескольких строк кода, чтобы создать нейросеть.
Возможна интеграция с мобильными платформами, такими как TensorFlow for Mobile и TensorFlow Lite.
Решения, созданные в Keras, можно экспортировать для других платформ, используя JSON и H5-файлы.
Keras позволяет работать с различными бэкендами — выбирать можно в зависимости от потребностей проекта. Кроме того, разработчик может проводить обучение и тестирование на разных бэкендах для дополнительной валидации качества модели.
Keras: недостатки
PyTorch: преимущества
PyTorch: недостатки
Пример 1. Создаём простую нейронную сеть в Keras. Для этого хватит нескольких строк кода, после чего нужно инициализировать модель, добавить слои и указать функции активации. Вот и всё.
model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid'))
Пример 2. Создаём аналогичную сеть при помощи PyTorch. Это потребует немного больше времени и навыков, чем в предыдущем случае. Нужно понимать, как работают классы в Python, знать основы ООП и т. д. Но зато PyTorch предоставляет больше возможностей для гибкой настройки сети.
class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) self.pool = nn.MaxPool2d(2, 2) self.conv2 = nn.Conv2d(6, 16, 5) self.fc1 = nn.Linear(16 * 5 * 5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): x = self.pool(F.relu(self.conv1(x))) x = self.pool(F.relu(self.conv2(x))) x = x.view(-1, 16 * 5 * 5) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x net = Net()
Пример 3. Сравниваем работу с оптимизаторами в Keras и PyTorch
Сначала подключим оптимизатор Adam с функцией потерь «бинарная кросс-энтропия» и метрикой качества «точность» с помощью Keras:
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
Теперь подключим оптимизатор SGD в PyTorch:
criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
В данном случае нет особых различий по сложности работы с оптимизатором между Keras и PyTorch.
Необходимо понимать, что и PyTorch, и Keras — прекрасные инструменты, хорошо справляющиеся со своими задачами. Но разработчик, приступая к своему проекту, должен помнить о балансе между затраченными усилиями и эффектом от них.
Если речь идёт о прототипе или несложном решении — лучше остановиться на Keras. Если же необходимо кастомизированное решение, требующее отступлений от стандартных алгоритмов решения задачи, — выбираем PyTorch.
Хотите субъективный совет от автора статьи? Если вы прямо сейчас выбираете, какую библиотеку изучить, — присмотритесь к PyTorch. Как правило, бизнес-задачи с реальными данными сложно выполнить с помощью стандартных методов. Благодаря своей гибкости PyTorch справится с большинством задач, которые вам придётся решать сейчас и в будущем.
Рубрика: Программирование
Дата публикации: 19 января 2021
Дата обновления: 10 апреля 2023
Автор: Илья Братеньков
Статистика: 2200 просмотров
Сферы применения, перспективы развития и возможная опасность для человека
Программирование 1 год назадРассказываем, какие ошибки совершают начинающие Android-разработчики, и как их избежать.
Программирование 1 год назадПосмотрим лидеров по запросам в интернете и публикациям.
Программирование 1 год назадКомплексный интернет-маркетинг для вашего бизнеса