[Программирование, Kotlin] Глубокое обучение на Kotlin: альфа-версия KotlinDL (перевод)

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
04-Май-2021 19:32
Перевод материала подготовлен в рамках онлайн-курса "Kotlin Backend Developer".
Приглашаем также всех желающих на бесплатный демо-урок «Объектно-ориентированное программирование в Kotlin». Цели занятия:
- знать элементы объектной модели Kotlin;
- создавать различные классы и объекты;
- выполнять наследование и делегирование;
- пользоваться геттерами и сеттерами.
Привет, друзья! Сегодня мы расскажем о первой предварительной версии KotlinDL (v.0.1.0) — высокоуровневого фреймворка для глубокого обучения, похожего на Keras, но написанного на Kotlin. В нем есть простые API для создания, тренировки и развертывания моделей глубокого обучения в среде JVM. Высокоуровневые API и точно настроенные параметры позволяют быстро приступить к работе с KotlinDL. Для создания и обучения своей первой нейронной сети вам достаточно написать всего несколько строк на Kotlin:
private val model = Sequential.of(
    Input(28, 28, 1),
    Flatten(),
    Dense(300),
    Dense(100),
    Dense(10)
)
fun main() {
    val (train, test) = Dataset.createTrainAndTestDatasets(
        trainFeaturesPath = "datasets/mnist/train-images-idx3-ubyte.gz",
        trainLabelsPath = "datasets/mnist/train-labels-idx1-ubyte.gz",
        testFeaturesPath = "datasets/mnist/t10k-images-idx3-ubyte.gz",
        testLabelsPath = "datasets/mnist/t10k-labels-idx1-ubyte.gz",
        numClasses = 10,
        ::extractImages,
        ::extractLabels
    )
    val (newTrain, validation) = train.split(splitRatio = 0.95)
    model.use {
        it.compile(
            optimizer = Adam(),
            loss = Losses.SOFT_MAX_CROSS_ENTROPY_WITH_LOGITS,
            metric = Metrics.ACCURACY
        )
        it.summary()
        it.fit(
            dataset = newTrain,
            epochs = 10,
            batchSize = 100,
            verbose = false
        )
        val accuracy = it.evaluate(
            dataset = validation,
            batchSize = 100
        ).metrics[Metrics.ACCURACY]
        println("Accuracy: $accuracy")
        it.save(File("src/model/my_model"))
    }
}
Поддержка GPUТренировка моделей — ресурсоемкая задача. Использование GPU может значительно ускорить этот процесс. Здесь на помощь придет KotlinDL! Для запуска кода на устройстве NVIDIA нужно добавить всего одну зависимость.Широкие возможности APIВ KotlinDL есть все необходимые API для создания и тренировки нейронных сетей прямого распространения, включая сверточные сети. В нем по умолчанию установлены разумные значения для большинства гиперпараметров. Фреймворк предлагает широкий выбор оптимизаторов, инициализаторов веса, функций активации и прочих возможностей для тонкой настройки модели. Вы можете сохранить полученную модель и импортировать ее в бэкенд-приложение JVM.Импорт моделей, обученных на KerasВстроенные в KotlinDL API позволяют создавать, тренировать и сохранять модели глубокого обучения и использовать их для работы с новыми данными. Можно импортировать и использовать модель, обученную с помощью KotlinDL или Keras версии 2.* на языке Python.И для тех и для других моделей доступен метод трансферного обучения: просто загрузите уже имеющуюся обученную модель и подгоните ее под свою задачу.Временные ограниченияВ текущей альфа-версии доступно только несколько слоев: Input()Flatten()Dense()Dropout()Conv2D()MaxPool2D() и AvgPool2D(). Это означает, что пока поддерживаются не все модели, обученные с помощью Keras. Можно импортировать и настроить обученные модели VGG-16 или VGG-19, а вот модель ResNet50, например, загрузить не получится. В следующих релизах появятся новые слои.Еще одно временное ограничение связано с развертыванием. Вы можете развернуть модель в серверной части JVM-среды, однако поддержка устройств Android появится только в следующих версиях.Что под капотом?KotlinDL использует TensorFlow Java API, который активно развивается сообществом разработчиков открытого ПО.Попробуйте сами!Мы подготовили несколько статей (на английском языке), которые помогут вам начать работу с KotlinDL: Будем рады получить ваши отзывы и пул-реквесты в GitHub Issues. Присоединяйтесь к каналу #deeplearning в Slack-сообществе Kotlin.

===========
Источник:
habr.com
===========

===========
Автор оригинала: Maria Khalusova
===========
Похожие новости: Теги для поиска: #_programmirovanie (Программирование), #_kotlin, #_kotlin, #_oop (ооп), #_programmirovanie (программирование), #_blog_kompanii_otus (
Блог компании OTUS
)
, #_programmirovanie (
Программирование
)
, #_kotlin
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 14:21
Часовой пояс: UTC + 5